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