java - 使用JAXB解析XML问题
本文介绍了java - 使用JAXB解析XML问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
加入@XmlElement(name="extendInfo")
不报错了,但xml转为对象
时,key
和value
设值不进去,对象转xml
没问题。
解析为xml
可以,xml
转为对象报错。报错截图不方便贴出来
在unmarshaller.unmarshal()
报空指针异常,报错不友好,可能贴出来也效果不大。
/* 总的xml类 */
public class Document {
//... 其它字段及其get,set方法
private List<ExtendInfo> extendInfo; //只要加上这个解析XML为对象就报错,但对象解析为xml没问题
@XmlElementWrapper(name="extendInfos")
@XmlElement(name="extendInfo") //加上这个就不报错了
public List<ExtendInfo> getExtendInfo() {
return extendInfo;
}
public void setExtendInfo(List<ExtendInfo> extendInfo) {
this.extendInfo = extendInfo;
}
}
@XmlType(propOrder={"key", "value"})
public class ExtendInfo {
private String key;
private String value;
@XmlAttribute
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
@XmlAttribute
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
//XML:
<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>
<document>
<!-- 其它的标签 -->
<extendInfos>
<extendInfo key="k1" value="v1"/>
<extendInfo key="k2" value="v2"/>
</extendInfos>
</document>
解决方案
同样的代码,朋友去试了下是OK
的。
于是找到了之前测试dom4j
加入了如下的JAR
包,是RC
版本,经试验有BUG
,换个2.0.0
版本就没影响了。
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.0.0-RC1</version>
</dependency>
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.0.0</version>
</dependency>
这篇关于java - 使用JAXB解析XML问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文