Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将具有相同元素和属性名称的XML映射到Java对象_Java_Xml_Parsing_Jaxb_Mapping - Fatal编程技术网

将具有相同元素和属性名称的XML映射到Java对象

将具有相同元素和属性名称的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/><

我已经搜索了这个特定的问题,我找到的最接近的线索是这个:但它仍然不是我所需要的,所以我希望有人能帮我解决这个问题

我正在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>
@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的一般问题。如果您更新答案以包括如何解决特定问题,我将取消否决票。