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

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

一个理想的解决scheme是显示类似于Word 2007显示跟踪更改方式的更改。 DeltaXML可以做到这一点,但是并没有提供一个真正的开箱即用的GUI,每个用户500美元!

160wpb4.jpg

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

替代文字http://www.a7soft.comhttp://img.dovov.comexamxml1_.gif

该工具应该具有使用属性作为关键的概念,以便它不认为重新排列的元素列表已经改变。 DeltaXML可以做到这一点,但是我没有正确设置屏幕截图。


更新:

到目前为止ExamlXML是最好的开箱即用的解决scheme。 但缺乏DeltaXML的变更pipe理概念。 造成一些可用性问题。

DeltaXML几乎是我需要的解决scheme,但具有更多function的东西会更好。 DeltaXML需要编写java代码来调用api,并写入XSL以将xml转换为预期的input。

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

我做了一些search,发现一个应用程序( ExamXML )似乎与突出显示function接近。 我下载了eval版本并testing你的文件:

http://www.programmedintheusa.comhttp://img.dovov.comstack547399.png

它突出了差异,做得非常好。 它看起来很漂亮,popup多less差异。 它看起来像你可以改变它使用的颜色,所以也许你可以使用灰色和白色去强调标签。 它也似乎有很多选项,您可以预先为您的用户设置。

我想指出,你将很难find一个不会显示标签名称的XML比较工具,因为这些标签是给内容上下文的东西。 如果取消上下文,将难以理解正在显示的数据。 无论如何,也许这个工具可能会有所帮助。 你是否还试图向用户展示这些工具中的一些,看看他们愿意容忍什么,有时甚至会让你感到惊讶。 希望这可以帮助!

我很惊讶没有人提到微软的XML记事本

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

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

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

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

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

我可能会尝试使用DeltaXML + XSLT转换来获得所需的特定结果。 在XML中使用纯文本比较工具的一个问题是,即使内容本身没有,XML文档的物理forms(缩进等)也会改变,这可能会导致大量的误报。 DeltaXML是比较基于文档的XML的一个非常好的工具。

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

Altova diffDog XML Spy和diffDog是例外的工具。 把他们从我冷冷的手中撬出来,有点儿东西。

超越比较是非常好的,因为@BobbyShaftoe已经提到。 但是,为了合并,我喜欢使用Araxis Merge 。 我们经常使用它来达到类似的目的。

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

感谢您的回应…但是这些都显得过于技术性。 我的用户通常不会看到XML标签,因为他们的XML创作工具将它们抽象出来。 是否有任何显示文本内容差异的工具,但不显示(或去强调)xml标签。

我要把它扔到那里:你的用户应该学习。 如果你有他们合并和改变XML文件 – 我假设潜在的logging保存或应用程序configuration – 那么他们应该至less有一个基本的了解他们在做什么。 他们不必成为XML专家就可以使用列出的工具并完成工作。

但是,如果要求用户对他们所从事的工作有一个基本的了解是不可能的,那么我build议您自己编写一个configuration工具,并将其交付给最终用户,而不是依赖第三方软件。

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

你有没有试过考迪夫 ? 当然,这仍然是一个技术工具,但很容易处理。 它有一个拖放界面来比较文件。

您可能会发现XML Diff和补丁GUI工具 (MSDN上的示例代码)可以更好地满足您的需求:它仍然显示标签,但是强调了文本的差异。 既然你得到的代码,多一点努力,你可以更精确地定制它的要求。

虽然样本相对比较老化(2004年7月,并且始于2002年),但它无痛地升级到了Visual Studio Express C#2008。 如果/当安装程序MSI提到“.NET代码示例中的SQLXML Bulkload”时,请勿从MSDN站点下载示例 。

无论是编程或UI,您可以使用MSDN中的XmlDiff,XmlPatch工具和库有关详细信息,请查看指南。

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

氧 XML编辑器有我发现的最好的收集XML diff的工具。 有几种不同的algorithm比较,所以如果默认不适合你,尝试语法感知或其他一些algorithm(现在,我使用版本8,并没有升级到版本10,所以ymmv,但我怀疑XML差异变得更糟)。

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

您可能需要告诉它如何识别单个元素,以便在您的文件上完美地工作,但这很容易完成,而且您只需要执行一次即可。

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