无法使用来自 xml 的非字符串值解组字段

Cannot unmarshal field with non string value from xml

我有这样的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. private String mubl;(在 Mubl class 中)是 @XmlValue 而不是 @XmlElement
  2. 在您的 xml 中您有 xmlns - 这意味着您指定了命名空间。所以,如果使用命名空间,你也必须在注释中使用它(更重要的是,XML 元素如果不声明一个,就会继承父的命名空间)。因此,当这些元素的名称空间为“http://com.zap.oldschool/”时,您的实现会尝试使用名称空间 =“”获取 hubl 和 mubl。这就是为什么,您必须将命名空间参数添加到注释 @XmlRootElement 和 @XmlElementin Huble class.