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

フィールド (インスタンス変数) に注釈を付ける場合は、次の型レベルの注釈を追加する必要があります。

@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 に答える
0

すべてのエラーに @XmlAnyElement(lax=true) を追加します (javax.xml.bind.JAXBElement にはデフォルトのコンストラクターがありません)。

于 2014-06-02T13:59:21.207 に答える