我正在寻找一种可以衍生和合并XML文件的开源版本控制工具。
我必须找到这样一个工具的难点是,我需要正确合并XML文件,比较节点而不是行。
有什么想法吗? 谢谢!
答案 0 :(得分:6)
不幸的是,这个问题没有一个通用的解决方案。 XML diffing对你认为不同的东西非常敏感。在一种情况下,子节点的顺序可能很重要,而在另一种情况下(甚至可能在同一个文件中)它可能是无关紧要的。
看看XMLUnit。尽管它的目标是单元测试,但它是一个完整的XML差分引擎。您必须告诉它(在代码中)如何确定两个节点是否有资格进行比较,然后如何处理找到的所有潜在差异(即,在您的应用程序中它们是否真实)。它会检测“差异事件”的详尽列表,包括
还有更多。这些中的任何一个对您的应用程序都很重要或不重要,只有您可以自行决定。这值得一看,但需要一些工作来获得你想要的东西。
答案 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。