如何在jaxb中注释类型集合的成员

时间:2009-06-18 11:03:15

标签: java jaxb marshalling

我已成功整理了以下课程

@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也不知道它的任何超类

如何对字段成员进行注释,以便将容器类封送为字段集合?

1 个答案:

答案 0 :(得分:0)

您不应将MyField类注释为@XmlRootElement,因为它不是xml根元素。我认为您可以使用@XmlType注释它,或者只是不注释它。您可以尝试将@XmlElement标记放在 getter 中,以用于类中的“fields”属性。如果它有效,您的XML将如下所示:

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

如果它不起作用,并且在黑暗中拍摄,请尝试将“收藏”的类型更改为“列表”,以检查它是否有所不同。您使用的是哪个版本的Java?用于序列化对象的代码如何?