合并XML文档

时间:2020-03-05 18:58:06  来源:igfitidea点击:

我需要"合并"两个XML文档,覆盖重叠的属性和元素。例如,如果我有document1:

<mapping>
    <key value="assigned">
        <a/>
    </key>
    <whatever attribute="x">
        <k/>
        <j/>
    </whatever>
</mapping>

和document2:

<mapping>
    <key value="identity">
        <a/>
        <b/>
    </key>
</mapping>

我想像这样合并两个:

<mapping>
    <key value="identity">
        <a/>
        <b/>
    </key>
    <whatever attribute="x">
        <k/>
        <j/>
    </whatever>
</mapping>

我更喜欢基于Java或者XSLT的解决方案,ant会做的很好,但是如果有简单的方法可以在Rake,Ruby或者Python中做到这一点,请不要害羞:

编辑:实际上,我发现我宁愿使用自动化的工具/脚本,甚至自己编写,因为手动合并大约30个XML文件有点笨拙... :-(

解决方案

回答

不确定是否要以编程方式执行此操作。

编辑:啊,我在编辑之前发布了它。我现在不像个白痴! ;)

如果我们只想将两个文件合并在一起,那么IBM有一个XML Diff and Merge Tool,还有Altova的DiffDog。

回答

如果我们喜欢XSLT,我以前在以下位置使用过一个不错的合并脚本:
奥利弗(Oliver)的XSLT页面

回答

我知道这是一个旧线程,但是Project:Merge可以为我们完成此任务。它可以将两个XML文件合并在一起,并且可以从命令行运行,因此我们可以手动将所有内容一起批处理,运行并仅解决任何冲突(例如,上面示例中'key'的更改属性值)点击几下。 (如果没有冲突,我们可以告诉它以静默方式运行。)

它可以执行XML文件的两向和三向比较以及两向和三向合并。 (在三向操作中,假设要比较/合并的两个文件具有相同的祖先。)