java - 如何使用 JAXB 删除 XML 中的标签

标签 java xml xslt jaxb marshalling

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

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

例如:删除标签订单

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

异常结果:

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

最佳答案

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

可以使用 JAXB 注释 @XmlElementWrapper 配置包装器标记 orders。因此,您可以创建 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 个模式更好,因为注释有效性的编译时验证。

关于java - 如何使用 JAXB 删除 XML 中的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18605340/

相关文章:

java - 通过公共(public)外部类访问私有(private)内部类 - 来自另一个类

java - 扫描 jtextfield 进行输入,写入文本文件,再次扫描新输入,直到用户关闭面板

xml - 使用 CacheStore、JDBC 驱动程序和 xml 配置部署 Ignite 应用程序的最佳选择

javascript - 在 XML 文件中添加新联系人时如何生成/写入 ID(字母数字)

java - 用一个循环写一个快速排序

Android 模拟器在窗口左上角显示为一个小框

json - 如何使用 KQL extractjson 函数引用以 @ 符号开头的 XML 属性?

xml - 使用 XSLT 以外的其他解决方案解析 XML

xml - 使用 xslt,如何添加在项目第一次出现之前开始并在项目最后一次出现之后结束的 xml 节点?

java - 亚马逊 AWS Signature V4 Java 给出错误的编码