2014-11-04 81 views
2

我有以下代碼:如何用jaxb編組一個集合?

@XmlRootElement(name = "foo") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class Foo 
{ 

    @XmlElement 
    private String id; 

    ... 

} 

我希望能夠封送Set<Foo> foos到:

<foos> 
    <foo> 
     <id>bar1</id> 
    </foo> 
    <foo> 
     <id>bar2</id> 
    </foo> 
</foos> 

我需要一個包裝類?如果是這樣,它應該看起來如何?我的註釋是否正確?編制代碼的樣子應該如何(如果你能說明這一點,那將非常感激)?

+0

你有沒有試着用@XmlElementWrapper設置 FOOS(NAME =「FOOS」);? – nomoa 2014-11-04 16:38:39

回答

3

如果你想封裝任何收藏使用XmlElementWrapper

@XmlElementWrapper(name="foos") 
@XmlElement(name="foo") 
private Set<Foo> foos; 

通過你不能直接馬歇爾一集,所以你必須包括你設置自己的類中的方法。所以,如果你只是想馬歇爾一組富的,你必須寫這樣一個bean:

@XmlRootElement(name = "foos") 
public class Foos { 
    @XmlElement(name="foo") 
    private Set<Foo> foo; 
} 
+0

也許我應該更清楚一點:是否有可能沒有一個單獨的類,這只是一個圍繞'Set '包裝,因爲基本上,這就是我會在你的情況下結束......?你介意提供一個完整的例子,說明在編組時,如何包裝'Set ',這樣我就不需要一個只包含'Set'的單獨的類...? – carlspring 2014-11-04 16:45:50

+0

對......我明白你的意思了。這工作!謝謝! – carlspring 2014-11-04 16:48:27

+0

@carlspring不幸的是它不可能直接做到這一點你必須將它包含在你自己的類中。 – nomoa 2014-11-04 16:48:43