2012-01-03 19 views
4

我有一个叫XmlSource类,它包含类型XmlSourceAudioLang的对象的集合,而XmlSourceAudioLang类有一个字段叫做语言,我需要编组为XML,即:如何包装集合在一个单亲标签

@XmlAccessorType(XmlAccessType.FIELD) 
public class XmlSource { 

    @XmlElement(name="original_audio_language", nillable=true) 
    protected Set<XmlSourceAudioLang> originalAudio; 

} 

@XmlAccessorType(XmlAccessType.FIELD) 
public class XmlSourceAudioLang { 

    @XmlElement(nillable = true) 
    private String language; 

} 

采用这种设置,JAXB生成original_audio_language标签的集合中的每个对象:

<original_audio_language> 
    <language>Ukrainian</language> 
</original_audio_language> 
<original_audio_language> 
    <language>Russian</language> 
</original_audio_language> 

有没有办法配置绑定,以便只有一个父母original_audio_language标记?

回答

9

假设你的意思是你想这样的:

<original_audio_language> 
    <language>Ukrainian</language> 
    <language>Russian</language> 
</original_audio_language> 

那就试试这个:

@XmlAccessorType(XmlAccessType.FIELD) 
public class XmlSource { 
    @XmlElementWrapper(name="original_audio_language") 
    @XmlElement(name="language") 
    protected Set<XmlSourceAudioLang> originalAudio; 
} 

@XmlAccessorType(XmlAccessType.FIELD) 
public class XmlSourceAudioLang { 
    @XmlValue 
    private String language;  
} 
+2

它的工作原理,谢谢。 – 2012-01-03 22:52:53