java - 使用JAXB解析XML问题
迷茫
迷茫 2017-04-17 17:58:05
0
1
672

加入@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>
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

reply all(1)
大家讲道理

The same code, a friend tried it and the version OK的。
于是找到了之前测试dom4j加入了如下的JAR包,是RC版本,经试验有BUG,换个2.0.0has no effect.

<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>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template