【问题标题】: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>
【问题讨论】:
标签:
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 个模式更好。