Невозможно распаковать поле с не строковым значением от xml - PullRequest
1 голос
/ 16 апреля 2020

У меня есть такой xml ответ

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Header/>
  <SOAP-ENV:Body>
    <Hubl xmlns="http://com.zap.oldschool/">
      <Mubl>&lt;?xml version="1.0" encoding="UTF-8" standalone="si"?&gt;&lt;Zap&gt;&lt;Zap ZapId="literal"</Mubl>
    </Hubl>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

И мой java объект в порядке, когда я его разбираю, кроме поля 'Mubl', получая для него значение null. Я хочу как-нибудь получить значение ZapId

Мое pojo для 'mubl'

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Mubl")
public class Mubl {
    @XmlElement(name = "Mubl")
    private String mubl;

    public String getMubl() {
        return mubl;
    }

    public void setMubl(String mubl) {
        this.mubl = mubl;
    }
}

Буду благодарен за предложения

1 Ответ

1 голос
/ 16 апреля 2020

РЕДАКТИРОВАТЬ:

  1. private String mubl;Mubl классе) является @XmlValue, а не @XmlElement
  2. В вашем xml у вас есть xmlns - это означает, что вы указали пространство имен. Итак, если используется пространство имен, вы должны использовать его и в аннотациях (более того, XML элементы наследуют пространство имен родителя, если они не объявляют его). Итак, ваша реализация пытается получить hubl и mubl с namespace = "", когда пространство имен этих элементов равно "http://com.zap.oldschool/". Вот почему вы должны добавить параметр пространства имен в аннотации @XmlRootElement и @XmlElementin Huble class.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...