Java 无法从xml中解组具有非字符串值的字段
我有这样的xml响应Java 无法从xml中解组具有非字符串值的字段,java,xml,unmarshalling,Java,Xml,Unmarshalling,我有这样的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><?xml version="1.0" encodin
<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><?xml version="1.0" encoding="UTF-8" standalone="si"?><Zap><Zap ZapId="literal"</Mubl>
</Hubl>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
非常感谢您的建议编辑:
私有字符串mubl
(在Mubl
类中)是@XmlValue
而不是@XmlElement
好的,也许是这样的:我认为
mubl
是一个根=类,这个类的属性=这个XML元素的值。。。因此,让我们用@XmlValue
替换@XmlElement
。仍然有null@XmlRootElement(name=“Hubl”)@xmlacessortype(xmlacesstype.FIELD)公共类Hubl{@xmlement(name=“Mubl”)私有Mubl Mubl;公共Mubl getMubl(){return Mubl;}公共void setMubl(Mubl Mubl){this.mabl=mabl;}}addnamespace=”http://com.zap.oldschool/“
到Hubl.class中的@XmlRootElement
和@XmlElement
。(+以前的更改)。它适用于我在您的xml中有xmlns-这意味着您指定了名称空间。因此,如果使用名称空间,您也必须在注释中使用它(此外,如果XML元素不声明父名称空间,则它们将继承父名称空间)。因此,当这些元素的名称空间为时,您的实现尝试使用namespace=获取hubl
和mubl
http://com.zap.oldschool/"
。这就是为什么您必须在Huble
类中的注释@XmlRootElement
和@XmlElement
中添加名称空间
参数。
@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;
}
}