2

我有一个格式为 xml 的文件:-

<item>
    <item_attribute index="1" type="1" >
        <name>value1</name>
    </item_attribute>
    <item_attribute index="2" type="1" >
        <a_differnt_name>value2</a_different_name>
    </item_attribute>
    <item_attribute index="5" type="2" >
        <another_name>value3</another_name>
    </item_attribute>
</item>

我正在使用 JAXB 来解组 xml,并为除“item_attribute”的子元素之外的每个元素设置一个类。我想一般地解组每个“item_attribute”元素中的数据(元素名称和元素值),而不知道元素的名称。

我所知道的是“item_attribute”总是只有 1 个子元素,并且可以调用该子元素并包含任何内容。

我尝试使用:

public class Item_attribute {

    private int index;
    private Object data;

    @XmlAttribute(name = "index")
    public int getIndex() {
        return index;
    }
    public void setIndex(int index) {
        this.index = index;
    }

    @XmlAnyElement(lax = true)
    public Object getData() {
        return this.data;
    }

}

但它不断抛出非法注释异常!

4

2 回答 2

0

将@XmlAnyElement(lax=true) 添加到每个错误(javax.xml.bind.JAXBElement 没有默认构造函数)

于 2014-06-02T13:59:21.207 回答
0

如果对字段(实例变量)进行注释,则需要添加以下类型级别的注释:

@XmlAccessorType(XmlAccessType.FIELD)
public class Foo {

    @XmlAnyElement(lax = true)
    private Object data;

     public Object getData() {  
          return this.data;
     }

}

或者您可以将注释放在 get 方法上。

public class Foo {

    private Object data;

     @XmlAnyElement(lax=true)
     public Object getData() {  
          return this.data;
     }

}
于 2012-07-10T12:45:18.337 回答