下面的代码工作得很好,当我从xml中删除命名空间xmlns(xmlns=“http://w/p-print”)时,我能够获得成功值。但是当xml带有xmlns属性时,响应对象在解组后变为空。我也尝试在Response类中Mapxmlns属性,但没有任何区别。似乎每当我在xml中遇到xmlns属性时,整个Response对象都为空。对此有什么想法吗?提前感谢大家。
正在解组的xml '
<?xml version="1.0" encoding="utf-8"?>
<PRInfo Version="2.00">
<ePrint>
<Params>
<devid>test</devid>
<printjobid>2323</printjobid>
</Params>
<PResonse>
<response xmlns="http://w/p-print" success="true"/>.
</response>
</PResonse>
<ePrint>
</PRInfo>
'
基于类的Map
@XmlAccessorType(XmlAccessType.FIELD)
public class PRInfo {
// required XmlElements comes here
@XmlAccessorType(XmlAccessType.FIELD)
public static class ePrint {
//required XmlElementa comes here
@XmlAccessorType(XmlAccessType.FIELD)
public static class Params {
// required XmlElement come here...
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"response"})
public static class PResonse {
@XmlElement
private Response response;
// Getter Setter
}
}
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "response")
public class Response {
@XmlAttribute(name = "success")
protected Boolean success;
// Getter and Setter
}
解组XML并从响应对象获取成功值。
1条答案
按热度按时间2lpgd9681#
当xmlns属性出现在response元素中时,它会为元素及其子元素创建默认命名空间。这意味着success属性位于默认命名空间中,并且您定义的Response类无法Map它,因为它没有命名空间声明。
尝试将命名空间声明添加到Response类。可以通过使用**@XmlType注解对该类进行注解,并将namespace特性设置为XML文档中的xmlns**特性的值来完成此操作。例如: