克隆或复制JAXB XML块

时间:2015-08-01 14:08:04

标签: java jaxb

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

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

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

<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。我的问题是我可以复制块,但是当我更改位置值时,它会在所有块中更改,因为我是初学者所以请尽可能帮助我。

提前致谢。

1 个答案:

答案 0 :(得分:3)

免责声明:我是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。该策略可以决定复制哪些值并进行一些基本转换。
相关问题