1

次のクラスを正常にマーシャリングしました

@XmlRootElement(name = "Field")
private static class MyField {       
    @XmlAttribute(name = "Name")
    String name;
    @XmlElement(name = "Size")
    int size;
    ....}

ここで、コンテナ クラスに Field の複数のインスタンスを保持させたいので、次の方法でクラスを宣言します。

private static class MyFieldsCollection {     
    private Collection<MyField> fields = new LinkedList<MyField>();

    public MyFieldsCollection() {}
    ....}

オブジェクトフィールドをマーシャリングしようとすると、次のエラーが発生します。

クラス java.util.LinkedList もそのスーパークラスもこのコンテキストに認識されていません

コンテナー クラスがフィールドのコレクションとしてマーシャリングされるように、フィールド メンバーに注釈を付けるにはどうすればよいですか?

4

1 に答える 1

0

MyField クラスは xml ルート要素ではないため、@XmlRootElement として注釈を付けないでください。@XmlType で注釈を付けるか、単に注釈を付けないようにすることができると思います。クラスの「フィールド」属性のゲッターに @XmlElement タグを入れてみてください。これが機能する場合、XML は次のようになります。

<MyFieldsCollection>
   <fields name="name1" size="size1"/>
   <fields name="name2" size="size2"/>
</MyFieldsCollection>

それが機能せず、暗闇でのショットである場合は、「コレクション」のタイプを「リスト」に変更して、違いがあるかどうかを確認してください。Java のどのバージョンを使用していますか? オブジェクトをシリアル化するために使用するコードはどのようになりますか?

于 2009-06-18T16:37:36.747 に答える