【发布时间】:2019-09-26 04:59:47
【问题描述】:
我有两个 XML 文件(源文件和目标文件),并希望使用 Java 有选择地将部分源文件合并到目标文件中。这些文件具有相同的结构,但包含在不同级别具有相同名称的嵌套标签(示例如下)。
源和目标可以有多个/Root/folders/folder 我想从源中选择(带有指定的标题)并将其与目标中的任何内容合并。如果目的地已经有内容,则不得覆盖;必须添加源内容。在下面的示例中,结果将包含一个 <folder caption="TestBlock" description="desc" moniker=""> 和多个 <folders>
我不是 Java 或 XML 方面的专家(但老板说要做,所以……)。
谷歌搜索显示了许多从文件 A 直接追加到文件 B 的示例,其中没有复杂的嵌套结构,但这些并不能解决我的问题。
源文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Root signature="{9252F941}" version="11.40">
<folders>
<folder caption="TestBlock" description="desc" moniker="">
<folders>
<folder caption="tb_insert" description="desc" moniker="">
<folders>
<folder caption="000_Test" description="desc" moniker="">
<references>
<ref key="{somekey}" />
</references>
</folder>
</folders>
<references>
<ref key="{somekey}" />
</references>
</folder>
</folders>
</folder>
<folder caption="AnotherBlock" description="desc" moniker="">
<folders>
<folder caption="abc" description="desc" moniker="">
<references>
<ref key="{somekey}" />
</references>
</folder>
</folders>
</folder>
</folders>
</Root>
目标文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Root signature="{9252F941}" version="11.40">
<folders>
<folder caption="Core" description="desc" moniker="" />
<folder caption="TestBlock" description="desc" moniker="">
<folders>
<folder caption="000_Temp" description="desc" moniker="">
<folders>
<folder caption="000_Temp2" description="desc" moniker="">
<references>
<ref key="{somekey}" />
</references>
</folder>
</folders>
</folder>
</folders>
<references>
<ref key="{somekey}" />
</references>
</folder>
</folders>
</Root>
期望的输出:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Root signature="{9252F941}" version="11.40">
<folders>
<folder caption="Core" description="desc" moniker="" />
<folder caption="TestBlock" description="desc" moniker="">
<folders>
<folder caption="tb_insert" description="desc" moniker="">
<folders>
<folder caption="000_Test" description="desc" moniker="">
<references>
<ref key="{somekey}" />
</references>
</folder>
</folders>
<references>
<ref key="{somekey}" />
</references>
</folder>
</folders>
<folders>
<folder caption="000_Temp" description="desc" moniker="">
<folders>
<folder caption="000_Temp2" description="desc" moniker="">
<references>
<ref key="{somekey}" />
</references>
</folder>
</folders>
</folder>
</folders>
<references>
<ref key="{somekey}" />
</references>
</folder>
</folders>
</Root>
任何帮助(菜鸟级别,请)将不胜感激。
【问题讨论】:
-
你有架构吗?
-
我不知道你是如何合并节点的。详细说明此 merge 的规则。
-
我没有架构。
-
谢谢,我会检查副本。