使用XML diff和merge进行版本控制

时间:2010-08-05 19:19:11

标签: xml merge controls diff version

我正在寻找一种可以衍生和合并XML文件的开源版本控制工具。

我必须找到这样一个工具的难点是,我需要正确合并XML文件,比较节点而不是行。

有什么想法吗? 谢谢!

6 个答案:

答案 0 :(得分:6)

不幸的是,这个问题没有一个通用的解决方案。 XML diffing对你认为不同的东西非常敏感。在一种情况下,子节点的顺序可能很重要,而在另一种情况下(甚至可能在同一个文件中)它可能是无关紧要的。

看看XMLUnit。尽管它的目标是单元测试,但它是一个完整的XML差分引擎。您必须告诉它(在代码中)如何确定两个节点是否有资格进行比较,然后如何处理找到的所有潜在差异(即,在您的应用程序中它们是否真实)。它会检测“差异事件”的详尽列表,包括

  • 属性顺序
  • 属性数
  • 子节点顺序
  • 子节点数
  • 隐式vs显式属性值
  • 评论差异
  • doctype差异
  • 名称空间差异

还有更多。这些中的任何一个对您的应用程序都很重要或不重要,只有您可以自行决定。这值得一看,但需要一些工作来获得你想要的东西。

答案 1 :(得分:2)

我过去使用过的东西是diffxml。您可以将其用作svn或git等VCS的diff命令。

答案 2 :(得分:2)

Project: Merge旨在解决这个问题:通过SCM软件比较和合并XML文件。

我担心它也不是免费的,但它比声称能够比较和合并XML的其他工具便宜得多。

答案 3 :(得分:1)

您正在寻找一个差异工具,它只是VCS的一个子集。所有VCS都可以使用外部程序来区分文件。由于外部diff-tool可以是任何东西,它也可以是你编写的脚本,它是为解析和比较两个xml文档而定制的。

我不知道这是否会让你更容易找到你想要的东西,但它可能会。

答案 4 :(得分:-1)

对于虚拟/懒惰用户来说,它应该是一个简单的一体化工具。 API或控制台程序不适合。看起来它确实在开源世界中不存在。

Clearcase可以做到,但它的价格昂贵。 Oxygen可以合并,但也不是免费的。

答案 5 :(得分:-2)

正如其他人指出你只需要一个好的差异工具而不是vcs。

不幸的是,我还没有听说任何支持xml的图形差异工具。所以我会使用常规的差异工具,如(winmerge或k3diff),然后我会使用您喜欢的任何xml验证工具验证合并产生的xml。