1

我已经搜索过这个特定的问题,我找到的最接近的线程是这个: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,我不知道如何映射它。我真的很感激代码片段或任何帮助。提前致谢。

4

2 回答 2

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;
    //...

}
于 2012-06-01T11:11:56.407 回答
-1

使用Castor Mapping 它将帮助您 Marshall 和 Unmarshall 数据。

于 2012-06-01T11:20:04.467 回答