Heim  >  Fragen und Antworten  >  Hauptteil

java - 使用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>
迷茫迷茫2763 Tage vor655

Antworte allen(1)Ich werde antworten

  • 大家讲道理

    大家讲道理2017-04-17 18:00:05

    同样的代码,朋友去试了下是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>

    Antwort
    0
  • StornierenAntwort