使用JAXB解析XML问题

加入@XmlElement(name="extendInfo")不报错了,但xml转为对象时,keyvalue设值不进去,对象转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>
阅读 5.1k
1 个回答

同样的代码,朋友去试了下是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>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题