我正在使用JAXB将java对象转换为xml文件。
在我的XML文件中,我需要在不使用XSLT的情况下删除标记 。
例如:删除标记订单
<order_List>
<orders>
<orderid>12324<orderid>
</orders>
</order_List>
例外结果:
<order_List>
<orderid>12324<orderid>
</order_List>
答案 0 :(得分:3)
我可以建议你“天真”的做法。
可以使用JAXB批注orders
配置包装器标记@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个模式可能更好。