【发布时间】:2010-10-13 12:06:50
【问题描述】:
我有两个结构相似的 XML 文件,我希望将它们合并到一个文件中。 目前我正在使用我在本教程中遇到的EL4J XML Merge。 但是它并没有像我期望的那样合并,例如主要问题是它没有将两个文件中的合并到一个元素中,即包含 1、2、3 和 4 的元素。 相反,它只是丢弃 1 和 2 或 3 和 4,具体取决于首先合并的文件。
因此,我将感谢任何有 XML Merge 经验的人,如果他们能告诉我我可能做错了什么,或者是否有人知道一个好的 XML API for Java,它能够根据我的需要合并文件?
非常感谢您提前提供的帮助
编辑:
确实可以提供一些关于这样做的好建议,因此增加了赏金。我尝试了 jdigital 的建议,但仍然遇到 XML 合并问题。
以下是我尝试合并的 XML 文件的结构类型示例。
<run xmloutputversion="1.02">
<info type="a" />
<debugging level="0" />
<host starttime="1237144741" endtime="1237144751">
<status state="up" reason="somereason"/>
<something avalue="test" test="alpha" />
<target>
<system name="computer" />
</target>
<results>
<result id="1">
<state value="test" />
<service value="gamma" />
</result>
<result id="2">
<state value="test4" />
<service value="gamma4" />
</result>
</results>
<times something="0" />
</host>
<runstats>
<finished time="1237144751" timestr="Sun Mar 15 19:19:11 2009"/>
<result total="0" />
</runstats>
</run>
<run xmloutputversion="1.02">
<info type="b" />
<debugging level="0" />
<host starttime="1237144741" endtime="1237144751">
<status state="down" reason="somereason"/>
<something avalue="test" test="alpha" />
<target>
<system name="computer" />
</target>
<results>
<result id="3">
<state value="testagain" />
<service value="gamma2" />
</result>
<result id="4">
<state value="testagain4" />
<service value="gamma4" />
</result>
</results>
<times something="0" />
</host>
<runstats>
<finished time="1237144751" timestr="Sun Mar 15 19:19:11 2009"/>
<result total="0" />
</runstats>
</run>
预期输出
<run xmloutputversion="1.02">
<info type="a" />
<debugging level="0" />
<host starttime="1237144741" endtime="1237144751">
<status state="down" reason="somereason"/>
<status state="up" reason="somereason"/>
<something avalue="test" test="alpha" />
<target>
<system name="computer" />
</target>
<results>
<result id="1">
<state value="test" />
<service value="gamma" />
</result>
<result id="2">
<state value="test4" />
<service value="gamma4" />
</result>
<result id="3">
<state value="testagain" />
<service value="gamma2" />
</result>
<result id="4">
<state value="testagain4" />
<service value="gamma4" />
</result>
</results>
<times something="0" />
</host>
<runstats>
<finished time="1237144751" timestr="Sun Mar 15 19:19:11 2009"/>
<result total="0" />
</runstats>
</run>
【问题讨论】:
-
你能添加想要的结果吗?
-
已经添加了预期的输出,将结果添加到结果节点是最关键的事情。