用于比较xml文件的工具或库

时间:2009-02-13 19:47:10

标签: xml comparison content-management

我正在寻找一种理解xml的XML比较工具。它不能像WinMerge或Beyond Compare那样逐行比较。

理想的解决方案是显示类似于Word 2007显示跟踪更改的方式的更改。 DeltaXML执行此操作,但没有真正的“开箱即用”GUI,每位用户500美元!:

ExamXml开箱即用,但以混乱的方式显示差异。它没有前后概念,它只是显示了差异:

alt text
(来源:a7soft.com

该工具应具有使用属性作为键的概念,因此它不会认为重新排序的元素列表已更改。 DeltaXML会这样做但我无法正确设置屏幕截图。


更新

到目前为止, ExamlXML 是最好的开箱即用解决方案。但它缺乏DeltaXML的变更管理概念。导致一些可用性问题。

DeltaXML 几乎是我需要的解决方案,但具有更多功能的开箱即用的东西会更好。 DeltaXML需要编写java代码来调用api,同时编写XSL以将xml转换为预期的输入。

13 个答案:

答案 0 :(得分:17)

我很惊讶没人提到微软的XML NotePad

它是免费的,它可以创建一个非常好的比较,告诉哪些元素/属性已经改变,移动,被删除等等:

(对不起,如果截图有点宽)。

您还可以将XLS应用于XML文件并执行各种编辑操作。值得一试。

答案 1 :(得分:14)

如果我理解你的问题,你可能有一个使用XML文件作为数据存储的应用程序,GUI将“技术”标签名称抽象为“用户友好”标签 - 我再次假设。因此,以类似方式查看差异将是一种自然的延伸。我还假设您的应用程序没有遵循“抽象”概念的差异设施。

我做了一些搜索,发现一个应用程序(ExamXML)似乎与突出显示功能接近。我下载了eval版本并对其进行了测试:

http://www.programmedintheusa.com/images/stack547399.png

在突出差异方面做得非常好。这看起来非常具有互动性,并且会出现多少差异。看起来你可以改变它使用的颜色,所以也许你可以用灰色和白色去强调标签。它似乎还有很多可以为用户预先设置的选项。

我想要指出,您将很难找到不会显示标记名称的XML比较工具,因为标记是提供内容上下文的内容。如果删除上下文,则很难理解显示的数据。无论如何,也许这个工具可能会有所帮助。您是否也尝试向用户展示其中的一些工具并了解他们愿意容忍的内容,有时他们可能会让您大吃一惊。希望这有帮助!

答案 2 :(得分:5)

SourceGear的DiffMerge对于单用户是免费的:

http://www.sourcegear.com/diffmerge/

答案 3 :(得分:3)

我可能会尝试DeltaXML +一个XSLT转换来获得您想要的特定结果。将纯文本比较工具与XML一起使用的一个问题是,即使内容本身没有,XML文档的物理形式(缩进等)也会发生变化,这可能会导致很多误报。 DeltaXML是一个非常好的工具,用于比较基于文档的XML。

此外,根据您的用户使用的编辑器,它可能内置了XML差异。例如,Arbortext Editor有一个很好的工具,可以显示突出显示/突破显示的文本(而不是标记)。

答案 4 :(得分:3)

Altova diffDog XML Spy和diffDog是特殊工具。从寒冷的死手中榨出它们,有点儿。

答案 5 :(得分:2)

Beyond Compare非常出色,正如@BobbyShaftoe已经提到的那样。但是,对于合并,我喜欢使用Araxis Merge。我们经常将它用于类似目的。

至于您对用户非技术能力的评论:

  

感谢回应......但这些似乎都太技术了。我的用户通常看不到xml标签,因为他们的XML创作工具将它们抽象出来。是否有任何工具可以显示文本内容的差异,但不显示(或取消强制)xml标记。

我要把它扔出去:你的用户应该学习。如果你让他们合并和更改XML文件 - 我假设可能用于记录保存或应用程序配置 - 那么他们应该至少对他们正在做的事情有一个基本的了解。他们不必是XML高手就可以使用列出的工具并完成工作。

但是,如果要求您的用户对他们正在做的工作有基本的了解是不可能的,那么我建议您自己编写配置实用程序并为最终用户提供,而不是依赖第三方软件。< / p>

答案 6 :(得分:1)

尝试Microsoft MSDN XML的XML记事本,它有一个比较XML文件。不知道它有多好。

答案 7 :(得分:0)

你试过examdiff吗?当然它仍然是一种技术工具,但它很容易使用。它有一个拖放界面来比较文件。

答案 8 :(得分:0)

我总是使用kdiff3。它易于使用,最多可比较3个文件。 http://kdiff3.sourceforge.net/

答案 9 :(得分:0)

您可能会发现The XML Diff and Patch GUI Tool(MSDN上的示例代码)会更好地满足您的需求:它仍会显示标记,但会强调文本的差异。由于您获得了代码,因此您可以根据自己的需求进行更精确的定制。

虽然样本相对较老(2004年7月,其根源于2002年),但它无痛地升级到Visual Studio Express C#2008。如果/当安装程序MSI提到“.NET代码示例中的SQLXML批量加载”时​​,请不要在从MSDN站点下载sample时将其推迟 - 它不是!

答案 10 :(得分:0)

无论是以编程方式还是UI方式,您都可以使用来自MSDN的XmlDiff,XmlPatch工具和库 有关其工作原理的详细信息,请查看指南。

http://msdn.microsoft.com/en-us/library/aa302294.aspx

答案 11 :(得分:0)

Oxygen XML编辑器拥有我发现的最好的XML diff工具集。有几种不同的算法可供比较,所以如果默认值对你不起作用,请尝试使用语法Aware或其他一些算法(现在,我使用的是版本8,并且没有升级到版本10所以ymmv,但我怀疑XML差异变坏了。)

答案 12 :(得分:0)

我知道这是一个古老的线程,但Project: Merge是一个新的Windows应用程序,可以管理XML文件的双向和三向合并和比较。 (三向操作假定有两个文件都是从公共基本文件派生的。)

您可能需要告诉它如何识别单个元素才能完美地处理您的文件,但这很容易做到,而且您只需要执行一次。