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

Fab*_*ens 4 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;

}
Run Code Online (Sandbox Code Playgroud)

@XmlAccessorType(XmlAccessType.FIELD)
public class XmlSourceAudioLang {

  @XmlElement(nillable = true)
  private String language;

}
Run Code Online (Sandbox Code Playgroud)

通过此设置,JAXB为集合中的每个对象生成original_audio_language标记:

<original_audio_language>
  <language>Ukrainian</language>
</original_audio_language>
<original_audio_language>
  <language>Russian</language>
</original_audio_language>
Run Code Online (Sandbox Code Playgroud)

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

ska*_*man 9

假设你的意思是你想要这个:

<original_audio_language>
  <language>Ukrainian</language>
  <language>Russian</language>
</original_audio_language>
Run Code Online (Sandbox Code Playgroud)

然后尝试这个:

@XmlAccessorType(XmlAccessType.FIELD)
public class XmlSource {
  @XmlElementWrapper(name="original_audio_language") 
  @XmlElement(name="language")
  protected Set<XmlSourceAudioLang> originalAudio;
}
Run Code Online (Sandbox Code Playgroud)
@XmlAccessorType(XmlAccessType.FIELD)
public class XmlSourceAudioLang {  
  @XmlValue
  private String language;    
}
Run Code Online (Sandbox Code Playgroud)