java - 克隆或复制 JAXB XML block

标签 java jaxb

我需要你的帮助。我正在使用 JAXB 生成一个 XML 文件。我需要做的客户端请求是,当检索数据(从数据库)以设置到 JAXB 对象时,我必须检查其中一个元素值。例如:

<id>123</id>
<Code>X22</Code>
**<location>A1-2-3</location>**

如果位置值如上所示,我必须将其更改为 A1、A2 和 A3,并设置为位置属性以克隆 block ,如下例所示。 第一份

<id>123</id>
<Code>X22</Code>
<location>A1</location>

第二份

<id>123</id>
<Code>X22</Code>
**<location>A2</location>**

第三份

<id>123</id>
<Code>X22</Code>
**<location>A3</location>**

并将其设置为相同的 XML。我的问题是我可以复制 block ,但是当我更改位置值时,它会在所有 block 中更改,因为我是初学者所以请帮助我。

提前致谢。

最佳答案

免责声明:我是 JAXB2-Basics 的作者其中包括 JAXB2 Copyable Plugin .

您可以使用 Copyable Plugin为了达成这个。这个插件提供了很好的 clonecopy... 方法,可以用来深度复制你的 JAXB 结构。

这就是它的工作原理。

  • 首先你必须enable the -Xcopyable plugin in your build .
  • 您还需要添加 org.jvnet.jaxb2_commons:jaxb2-basics-runtime 依赖项。
  • 您生成的类将获得 clone()copyTo(...) 方法。
  • 最简单的方法是使用 clone(),只需克隆整个东西并更改您需要更改的值即可。
  • 一种更高级的方法是编写一个 CopyStrategy 并使用 myJaxbObject.copyTo(null, otherInstance, myCopyStrategy)“复制到”òtherInstance 使用该策略。该策略可以决定复制哪些值并进行一些基本转换。

关于java - 克隆或复制 JAXB XML block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31762756/

相关文章:

java - Spring JPA数据,具有相同功能的多种方法

xml - 如何使用 JAXB 解析带有命名空间的 XML

java - SOAP 和需要 Java serialVersionUID

java - 如何使用 JAXB 保留 XML 注释?

java - 命令行应用程序的 Spring Boot 返回退出代码

java - hibernate 搜索 @ContainedIn 不适用于 boolean 字段

java - JPA实体设计建议

xml - 如何在解码 xml 时忽略命名空间

ant - ANT 脚本中的 XJC 任务显示为 "Use Class Customization"

java - 查找多个键是否映射到相同的值