3

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

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

例如:删除标签订单

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

异常结果:

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

1 回答 1

3

我可以建议你“天真的”方法。

包装标记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 个模式更好。

于 2013-09-04T05:16:37.617 回答