用jaxb改变xml结构

时间:2014-08-20 15:34:04

标签: java xml jaxb mapping

我有以下结构:

<data name="piece-shipment" error-status="0"
        product-name="test" name="Hook" street="Freeway 21" city="Bumphill"/>

以及以下jaxb注释模型..

@XmlRootElement(name = "data")
@XmlAccessorType(XmlAccessType.FIELD)    
public class PieceShipment {

    /**
     * The field describes, of the parcel is returned to the origin sender
     */
    @XmlAttribute(name = "product-name")
    private String productName;

    /**
     * recipient information
     */
    @XmlJavaTypeAdapter(RecipientAdapter.class)
    private Recipient recipient;
   .....
}




 @XmlAccessorType(XmlAccessType.FIELD)
public class Recipient {

    private String name;
    private String street;
    private String city;
...
}

如何将PieceShipment的关系映射到收件人?它们处于相同的元素级别。

我尝试使用适配器,但不会调用适配器。

1 个答案:

答案 0 :(得分:1)

使用标准JAXB (JSR-222)映射元数据,您无法将Recipient中的属性映射到PieceShipment映射到的同一父元素。

如果您使用EclipseLink MOXy作为JAXB提供商,那么您可以使用我们的@XmlPath扩展程序来完成此任务:

@XmlPath(".")
private Recipient recipient;

了解更多信息

我在博客上写了更多关于MOXy XPath映射扩展的内容: