添加diff的两边以合并

时间:2009-01-21 14:27:36

标签: merge diff

我有两个XML文件。它们是相似的,但有两个节点,其中任何一个文件只有一个。我想在一个单独的文档中合并两组这样的文档,其中首先是A面的节点,然后是B面的节点。

我不是diff工具的有经验的用户,并且下载了KDiff3来启动某个地方.. 任何人都可以把我放在正确的道路上吗?

- 编辑 -
Finding diff tools是我自己可以管理的事情 但是如何使这些工具中的一个(无论哪一个)通过首先从file1然后从file2放入部分来自动进行合并是我正在寻找的。 这是一个相当广泛的文件,所以我最好不要在mergin过程中有任何干预。

4 个答案:

答案 0 :(得分:1)

DiffMerge。它是免费的,适用于Windows,Mac OS X和Unix。

答案 1 :(得分:1)

这听起来更像是一个软件来创建,然后找到该软件。

如果您自己滚动,则可以添加两个XML都有效的附加检查。

答案 2 :(得分:1)

如果xml“节点”以任何方式相似,那么使用标准diff工具可能会遇到很大问题。例如:

文件1:

1 <node id="1" />
2 <node id="2a">
3   <content item="1"/>
4   <content item="2a"/>
5 </node>
6 <node id="3" />

file2的:

1 <node id="1" />
2 <node id="2b">
3   <content item="1"/>
4   <content item="2b"/>
5 </node>
6 <node id="3" />

标准差异工具将突出显示第2行和第4行需要合并,但即使您自动添加来自file2的行,您最终也会得到一个无效的xml文件:

1 <node id="1" />
2 <node id="2a">
2 <node id="2b">
3   <content item="1"/>
4   <content item="2a"/>
4   <content item="2b"/>
5 </node>
6 <node id="3" />

您确实需要一个支持xml的差异/合并工具。我找到了一个名为XmlMerge的描述,以及一个示例,表明它完全符合您的要求。这是EL4J的一部分。

有一个名为XUpdate的休眠工作,周围有相当数量的工具(用于生成XUpdate差异和应用它们)。 还有一些.net classes使用不同的基础。你需要做一些脚本来使用我认为的这些系统中的任何一个。

答案 3 :(得分:0)

KDiff3可以将两个输入版本都放到输出文件中。有标记为A和B的按钮。您可以单击其中一个以将一个版本放入合并结果。或者您可以单击它们,并且将包含两个版本。单击这些按钮的顺序将影响插入行的顺序。

它还可以合并整个目录。

唯一的问题似乎是自动化。

KDiff3的键盘shorcuts可以以非常丰富的方式配置,所以我会尝试在这里查看,然后可能会使用一些键盘脚本应用程序。

可能还有其他一些更简单的方法: - )