[英]Converting an XML to a JAXB Annotated Class
我试图将下面的XML转换为带有JAXB注释的类,但是我在考虑一个在XML根内重复元素的解决方案时遇到麻烦。
<addresses xmlns='http://jabber.org/protocol/address'>
<address type='to' jid='hildjj@jabber.org/Work' />
<address type='cc' jid='jer@jabber.org/Home' />
</addresses>
我有一个映射到XML的类,我希望在构造函数中传递的列表中的每个项目,在XML根元素“地址”中形成具有属性“类型”和“ jid”的元素“地址”。
@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;
}
}
例如,如果我在实例化对象时传递一个列表(“ User1”,“ User2”,“ User3”),则生成的XML将如下所示:
<addresses xmlns='http://jabber.org/protocol/address'>
<address type='to' jid='User1' />
<address type='to' jid='User2' />
<address type='to' jid='User3' />
</addresses>
我设法通过创建两个类Address和Addresses实现了这一点。 Addresses根元素将使用“地址”类的列表作为元素输入。
@XmlRootElement(name = "addresses", namespace = "http://jabber.org/protocol/address")
@XmlAccessorType(XmlAccessType.FIELD)
public class Addresses {
@XmlElement
private List<Address> address; //List of type address
private Addresses() {
// Private no-args default constructor for JAXB.
}
public Addresses(List<String> address) {
this.address = address;
}
}
这是具有“ to”和“ jid”属性的地址类。 它在构造函数中采用String类型的输入jid。
@XmlRootElement(name = "address")
@XmlAccessorType(XmlAccessType.FIELD)
public class Address {
@XmlAttribute
private String to = 'to';
@XmlAttribute
private String jid;
private Address() {
// Private no-args default constructor for JAXB.
}
public Address(String jid) {
this.jid = jid;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.