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を使用する と、データのマーシャリングとアンマーシャリングに役立ちます。

于 2012-06-01T11:20:04.467 に答える