如何将集合包装在单个父标记中

时间:2012-01-03 22:19:06

标签: java xml collections jaxb

我有一个名为XmlSource的类,它包含XmlSourceAudioLang类型的对象集合,而XmlSourceAudioLang类有一个名为language的字段,我需要将其编组为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标记?

1 个答案:

答案 0 :(得分: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;    
}