0
我试图将下面的XML转换成JAXB带注释的类,但我无法想到元素在XML根内重复出现的解决方案。将XML转换为JAXB带注释的类
<addresses xmlns='http://jabber.org/protocol/address'>
<address type='to' jid='[email protected]/Work' />
<address type='cc' jid='[email protected]/Home' />
</addresses>
我有这个类映射到XML,我想与属性“类型”和“JID”元素“地址”,形成XML根元素列表中的每个项目的地址“内我传入构造函数。
@XmlRootElement(name = "addresses", namespace = "http://jabber.org/protocol/address")
@XmlAccessorType(XmlAccessType.FIELD)
public class Addresses {
@XmlElement
private List<String> address;
private Addresses() {
// Private no-args default constructor for JAXB.
}
public Addresses(List<String> address) {
this.address = address;
}
}
例如,如果我通过列表(“用户1”,“用户2”,“用户3”)实例化对象时,生成的XML将看起来像:
<addresses xmlns='http://jabber.org/protocol/address'>
<address type='to' jid='User1' />
<address type='to' jid='User2' />
<address type='to' jid='User3' />
</addresses>
尝试阅读解决方案发布[这里](http://stackoverflow.com/questions/24307106/how-to-annotate-a-list-using-xmlelement)。但似乎我不能使用@XmlElementWrapper注释,因为没有办法设置根元素的属性(例如地址的名称空间) – jeffsia
“”的子元素不是简单的字符串值。它们是空的''具有两个属性的元素,所以你需要一个表示该对象的类,即具有两个字段的对象:'type'和'jid'。然后将'List '替换为'List '。 –
Andreas
首先构建一个'xsd schema',然后使用maven插件'org.jvnet.jaxb2.maven2'或'xjc'来构建'JAXB'类。它更清楚地了解元素层次结构 – ulab