2009-06-18 39 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?你用來序列化你的對象的代碼是怎麼樣的?