2009-06-18 99 views
1

我已经成功地封了下面的类如何注释类型集合的成员JAXB

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

现在我希望有我的容器类以保存场的多个实例,所以我宣布在以下一类方法:

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

    public MyFieldsCollection() {} 
    ....} 

当我简单地尝试当元帅的集装箱场我得到以下错误:

类java.util.LinkedList中也没有任何的它s已知超类

如何注释字段成员,以便将容器类作为字段集合编组?

+0

由于容器类没有注释,你不能编组它。确保MyFieldsCollection是您的新的@XmlRootElement而不是Field。另外,用@XmlList注释Collection 。 – f1sh 2010-07-21 14:29:32

回答

0

您不应将MyField类注释为@XmlRootElement,因为它不会是xml根元素。我认为你可以用@XmlType对它进行注释,或者根本不注释它。您可以尝试将@XmlElement标记放在getter中,以获取类中的“fields”属性。如果一切正常,你的XML看起来就像这样:

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

如果它不工作,这是在黑暗中摸索,尝试改变“收集”的类型“列表”,以检查它是否有所作为。你使用的是什么版本的Java?你用来序列化你的对象的代码是怎么样的?