将具有相同元素和属性名称的XML映射到Java对象
我已经搜索了这个特定的问题,我找到的最接近的线索是这个:但它仍然不是我所需要的,所以我希望有人能帮我解决这个问题 我正在Zimbra Collaboration Suite 7服务器上执行SOAP请求,以获取联系人。答案是这样的:将具有相同元素和属性名称的XML映射到Java对象,java,xml,parsing,jaxb,mapping,Java,Xml,Parsing,Jaxb,Mapping,我已经搜索了这个特定的问题,我找到的最接近的线索是这个:但它仍然不是我所需要的,所以我希望有人能帮我解决这个问题 我正在Zimbra Collaboration Suite 7服务器上执行SOAP请求,以获取联系人。答案是这样的: <cn fileAsStr="Arthur, Spooner" f="" id="280" rev="1973" d="1338524233000" t="" md="1338524233" ms="1973" l="7"><meta/><
<cn fileAsStr="Arthur, Spooner" f="" id="280" rev="1973" d="1338524233000" t="" md="1338524233" ms="1973" l="7"><meta/><a n="homePostalCode">93849</a><a n="lastName">Spooner</a><a n="birthday">1980-05-24</a><a n="homeStreet">Berkleystreet 99</a><a n="firstName">Arthur</a></cn>
@XmlAccessorType(XmlAccessType.FIELD)
public class ContactAttribute {
@XmlAttribute(name="n")
private String attribute;
@XmlValue
private String value;
}
@XmlRootElement(name = "cn")
@XmlAccessorType(XmlAccessType.FIELD)
public class Contact {
@XmlAttribute
Integer id;
@XmlAttribute
Integer rev;
//...
@XmlElements(@XmlElement(name = "a"))
List<ContactAttribute> attributes;
//...
}
我想将其映射到一个Java对象,如下所示:
<cn fileAsStr="Arthur, Spooner" f="" id="280" rev="1973" d="1338524233000" t="" md="1338524233" ms="1973" l="7"><meta/><a n="homePostalCode">93849</a><a n="lastName">Spooner</a><a n="birthday">1980-05-24</a><a n="homeStreet">Berkleystreet 99</a><a n="firstName">Arthur</a></cn>
@XmlAccessorType(XmlAccessType.FIELD)
public class ContactAttribute {
@XmlAttribute(name="n")
private String attribute;
@XmlValue
private String value;
}
@XmlRootElement(name = "cn")
@XmlAccessorType(XmlAccessType.FIELD)
public class Contact {
@XmlAttribute
Integer id;
@XmlAttribute
Integer rev;
//...
@XmlElements(@XmlElement(name = "a"))
List<ContactAttribute> attributes;
//...
}
公共类联系人{
整数id;
整数版本;
字符串名称前缀;
字符串名;
字符串名称;
字符串lastName;
字符串职务;
ArrayList地址;
生日;
弦乐部;
整型手机;
字符串电子邮件;
弦乐公司;
弦乐;
...
我通常使用JAXB来实现这一点,但由于所有元素都被称为a,所有属性都被称为n,我不知道如何映射。我真的非常感谢您提供代码片段或任何帮助。提前感谢。您可以尝试这样做:
<cn fileAsStr="Arthur, Spooner" f="" id="280" rev="1973" d="1338524233000" t="" md="1338524233" ms="1973" l="7"><meta/><a n="homePostalCode">93849</a><a n="lastName">Spooner</a><a n="birthday">1980-05-24</a><a n="homeStreet">Berkleystreet 99</a><a n="firstName">Arthur</a></cn>
@XmlAccessorType(XmlAccessType.FIELD)
public class ContactAttribute {
@XmlAttribute(name="n")
private String attribute;
@XmlValue
private String value;
}
@XmlRootElement(name = "cn")
@XmlAccessorType(XmlAccessType.FIELD)
public class Contact {
@XmlAttribute
Integer id;
@XmlAttribute
Integer rev;
//...
@XmlElements(@XmlElement(name = "a"))
List<ContactAttribute> attributes;
//...
}
使用
它将帮助您整理和解压数据。任何-1的原因。请添加注释-1,因为没有解释如何使用Castor解决问题中确定的特定问题。您可以浏览教程中的URL。教程中说明了如何转换XML2Java或Java2XML。请参阅“提供链接上下文”一节:问题是关于如何映射特定用例,而不是关于将数据转换为XML或从XML转换为XML的一般问题。如果您更新答案以包括如何解决特定问题,我将取消否决票。