【问题标题】:How to remove the tag in XML using JAXB如何使用 JAXB 删除 XML 中的标记
【发布时间】:2013-09-04 04:19:01
【问题描述】:

我正在使用 JAXB 将 java 对象转换为 xml 文件。

在我的 XML 文件中,我需要在不使用 XSLT 的情况下删除标签

例如:去掉订单标签

<order_List>
  <orders>
    <orderid>12324<orderid>
  </orders>
</order_List>

异常结果:

<order_List>
   <orderid>12324<orderid>
</order_List>

【问题讨论】:

  • 我对 JAXB 问题的建议通常是先搜索 Blaise Doughan 对其他类似问题的回答,然后等待他对您的问题的答复。

标签: java xml xslt jaxb marshalling


【解决方案1】:

我可以建议你“幼稚”的方法。

包装标签orders可以使用JAXB注解@XmlElementWrapper进行配置。因此,您可以创建 2 个模型:一个包含此标签,另一个不包含此标签。您可以使用包含此标签的模型来解析您的数据,然后将数据复制到不包含此标签的模型中,然后使用它进行序列化。

@XmlRootElement(name = "index-annotations")
public class OrderList {
   private Collection<Integer> orderIds;

   @XmlElement(name = "orderid", type = Integer.class)
   public Collection<Integer> getOrderId() {
       return orderIds;
   }
}


@XmlRootElement(name = "index-annotations")
public class OutputOrderList extends OrderList {
   @Override
   @XmlElement(name = "orderid", type = Integer.class)
   @XmlElementWrapper(name="orders")
   public Collection<Integer> getOrderId() {
       return orderIds;
   }
}

显然,该解决方案包含一种重复代码,但由于注释有效性的编译时验证,它可能比使用 XML 配置 2 个模式更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多