回答
我以前用过的东西是diffxml。您可以将其用作svn或git等VCS的diff命令。
不幸的是,这个问题没有一成不变的解决方案。 XML差异对您认为不同的内容非常敏感。在一种情况下,子节点的顺序可能很重要,而在另一种情况下(甚至可能在同一个文件中),它可能无关紧要。
看看XMLUnit。即使它是针对单元测试,它也是一个完整的XML差异引擎。你必须告诉它(在代码中)如何确定两个节点是否有资格进行比较,然后如何处理所有发现的潜在差异(即它们是否真实,在你的应用程序中)。它可以检测“差事件”包括
- 属性为了
- 属性数
- 子节点顺序
- 号子节点的
- 隐VS明确的属性值
- 评论的详尽清单差异
- 文档类型差异
- namespac e差异
还有一大堆。这些对您的应用程序来说可能都很重要或不重要,只有您可以决定。值得一看,但需要一些工作才能得到你想要的。
您正在寻找一个diff-tool,它只是VCS的一个子集。所有VCS'都可以使用外部程序来区分文件。由于外部diff工具可以是任何东西,它也可以是由您编写的脚本,它可以用来解析和比较两个xml文档。
我不知道这是否让您更容易找到您要找的东西,但它可能会。
正如其他人指出,你只需要一个很好的diff工具而不是vcs。
不幸的是,我还没有听说任何支持xml的图形差异工具。所以我会使用像(winmerge或k3diff)这样的常规diff工具,然后使用任何你喜欢的xml验证工具来验证合并产生的xml。
它应该是一个简单的所有在一个工具为虚拟/懒惰的用户。 API或控制台程序不适合。它看起来好像它不存在于开源世界中。
Clearcase可以做到这一点,但它是昂贵的。 Oxygen可以合并,但它也不是免费的。
你应该可能会将其变成问题更新部分。这不是一个答案。 – firegurafiku 2017-04-03 11:52:38
控制台程序是完美的,只要它只需要一个命令 – Mike76 2017-08-18 06:20:00
Project: Merge旨在解决这个确切问题:通过SCM软件比较和合并XML文件。
恐怕它也不是免费的,但它比声称可以比较和合并XML的其他工具要便宜得多。
- 1. XML的差异和合并
- 2. 使用MVFS进行版本控制
- 3. 使用HATEOAS对耦合RESTful API进行版本控制
- 4. 乐观与多版本并发控制 - 差异?
- 5. 有效使用差异的版本控制数据库
- 6. 使用Accept头对版本信息进行版本控制
- 7. 差异2.3.3版本和4+
- 8. 使用Git和Dymola/Modelica进行版本控制
- 9. Elixir使用SCSS和JavaScript进行版本控制
- 10. 使用TFS在VM和版本控制中进行SharePoint开发
- 11. 使用Visual Studio 2010和HG进行版本控制
- 12. 无版本控制的项目合并
- 13. 使用GIT修订版进行版本控制
- 14. 使用TFS 2010进行VS2005版本控制而不使用TS2005?
- 15. 如何使用Mercurial进行文本文档的版本控制?
- 16. Eclipse版本差异
- 17. Python版本差异
- 18. GWT版本差异
- 19. Android版本差异
- 20. php版本差异
- 21. 使用psvn显示版本差异
- 22. 使用Tortoise SVN进行单用户版本控制
- 23. Xcode故事板跨版本控制的差异
- 24. 控制台和JDBC中的十进制截断/舍入差异
- 25. Mac版本控制与合并和支持
- 26. 使用mergedModelFromBundles:和版本控制(CoreData)
- 27. 使用分布式版本控制系统进行版本管理
- 28. restlet内容类型,使用restlet进行版本控制
- 29. 使用Web开发进行版本控制
- 30. 使用版本控制进行软件测试
可能的解决方案:[免费的Xml比较/合并工具](http://stackoverflow.com/questions/1871076),[XML Diff和合并](http://stackoverflow.com/questions/430001) – 2011-08-22 13:45:47