我已经搜索过这个特殊问题,我找到的最接近的线程是这个:Java/JAXB: Unmarshall XML elements with same name but different attribute values to different class members但它仍然不是我需要的,所以我希望有人可以帮助我。
我正在Zimbra Collaboration Suite 7服务器上执行SOAP请求以获取联系人。答案是这样的:
<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>
我想将它映射到Java对象,如下所示:
public class Contact {
Integer id;
Integer rev;
String namePrefix;
String firstName;
String middleName;
String lastName;
String jobTitle;
ArrayList<Adress> adresses;
Date birthday;
String department;
Integer mobilePhone;
String email;
String company;
String notes;
...
我通常使用JAXB来做这件事,但由于所有元素都被称为a和所有属性n,我不知道如何映射它。我真的很感激代码片段或任何形式的帮助。提前谢谢。
答案 0 :(得分:1)
您可以尝试这样做:
@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 Mapping 它将帮助您对Marshall和Unmarshall数据进行处理。