2010-08-05 85 views
10

我正在寻找一种可以区分和合并XML文件的开源版本控制工具。使用XML差异和合并进行版本控制

我不得不寻找这样的工具的困难是,我需要正确合并比较节点而不是线条的XML文件。

有什么想法? 谢谢!

+0

可能的解决方案:[免费的Xml比较/合并工具](http://stackoverflow.com/questions/1871076),[XML Diff和合并](http://stackoverflow.com/questions/430001) – 2011-08-22 13:45:47

回答

2

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

6

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

看看XMLUnit。即使它是针对单元测试,它也是一个完整的XML差异引擎。你必须告诉它(在代码中)如何确定两个节点是否有资格进行比较,然后如何处理所有发现的潜在差异(即它们是否真实,在你的应用程序中)。它可以检测“差事件”包括

  • 属性为了
  • 属性数
  • 子节点顺序
  • 号子节点的
  • 隐VS明确的属性值
  • 评论的详尽清单差异
  • 文档类型差异
  • namespac e差异

还有一大堆。这些对您的应用程序来说可能都很重要或不重要,只有您可以决定。值得一看,但需要一些工作才能得到你想要的。

1

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

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

-2

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

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

-1

它应该是一个简单的所有在一个工具为虚拟/懒惰的用户。 API或控制台程序不适合。它看起来好像它不存在于开源世界中。

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

+1

你应该可能会将其变成问题更新部分。这不是一个答案。 – firegurafiku 2017-04-03 11:52:38

+0

控制台程序是完美的,只要它只需要一个命令 – Mike76 2017-08-18 06:20:00

2

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

恐怕它也不是免费的,但它比声称可以比较和合并XML的其他工具要便宜得多。