当前位置: 首页 > 知识库问答 >
问题:

使用jaxb更改xml结构

屠锐
2023-03-14

我有以下结构:

<data name="piece-shipment" error-status="0"
        product-name="test" name="Hook" street="Freeway 21" city="Bumphill"/>
@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;
...
}

共有1个答案

韦宏扬
2023-03-14

使用标准的JAXB(JSR-222)映射元数据,您不能将recipient的属性映射到pieceshipment映射到的父元素中。

如果您使用EclipseLink MOXy作为JAXB提供程序,那么您可以使用我们的@xmlpath扩展来完成以下操作:

@XmlPath(".")
private Recipient recipient;

有关更多信息

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

  • http://blog.bdoughan.com/2010/07/xpath-based-mapping.html
 类似资料:
  • 我正在考虑创建XML文件的Java生成器,然后由另一个Java程序加载这些文件(我不能更改那里的代码)。很明显的答案是JAXB,但是我偶然发现了一个问题。 所有三个XML都将是生成器的有效输出。我已经为fistElement、secondElement等创建了Java类(有很多),但我想不出如何将它们全部添加到一个HeadTag元素下。 我有很多元素,超过500个,所以把它们作为一个字段放在课堂上

  • 我在使用JAXB和对象列表时遇到问题。JAXB用于从spring 4中开发的REST api中整理/取消整理XML。类结构没有太多xml结构,而我使用的是ArrayList 我有Java业务对象模型如下: 客户端: Offer(根元素): 和反封送器: 问题: 当我发送: 我得到:offer.client.age=0 但如果我将以下内容发送到解组器: 我得到:offer.client.age=21

  • 如何从lookuptable中获取等??这意味着每个发生的地方都应该使用表中的。我不知道如何编写XSL。

  • 我是XSLT新手。我想根据其他子节点的条件更改XML中的根节点。但子节点始终保持不变。例如,我有以下XML: 我喜欢将XML更改为: 这意味着依赖于<代码> 我不想在每个<代码>

  • 我必须在这个xml中设置“count”属性的值: 我想使用这样的代码(VTDXML库)使用“Foo”更改myCount值: 这样我反而获得了 那不是我的目标因为我想要的是