2009-02-13 48 views
40

我正在寻找理解xml的XML比较工具。它不能像WinMerge或Beyond Compare一样逐行比较。用于比较xml文件的工具或库

理想的解决方案是显示类似于Word 2007显示跟踪更改方式的更改。 DeltaXML做到这一点,但没有拿出一个真正的GUI“开箱即用”,是$ 500每用户!:

http://i41.tinypic.com/os8k5k.jpg

ExamXml作品开箱即用,但显示在一个混乱的方式的差异。它没有前一个概念,之后,它只是显示的差异:

alt text http://www.a7soft.com/images/examxml1_.gif

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


UPDATE:

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

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

+0

请澄清更多 - 在你的例子中,假定diff工具应该产生什么输出? – 2009-02-13 20:20:58

+1

谁在回答这个问题的所有答案?很幼稚。 – BobbyShaftoe 2009-02-13 20:58:40

+0

我自己提高了其中的一些,因为我觉得所提到的所有公用设施都是非技术人员通过培训可以处理的高质量应用程序。 – 2009-02-13 21:00:39

回答

13

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

我做了一些搜索,发现一个应用程序(ExamXML),似乎与突出显示功能接近。我下载了EVAL版本和测试文件反对:

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

它确实凸显差异的一个不错的工作。它看起来很漂亮,并且弹出多少区别。它看起来像你可以改变它使用的颜色,所以也许你可以使用灰色和白色去强调标签。它也似乎有很多选项可以为用户预先设置。

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

0

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

-1

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

+0

XML是否敏感?我不这么认为,我认为它只是将它们视为纯文本文件,以及XML信息集中不存在的点差(例如编码更改)。 – bortzmeyer 2009-02-24 16:49:09

1

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

2

除了比较出色的@BobbyShaftoe已经提到。然而,为了合并,我喜欢使用Araxis Merge。我们经常用它来达到类似的目的。

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

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

我打算抛出这个:你的用户应该学习。如果你让他们合并和更改XML文件 - 我假设可能用于记录保存或应用程序配置 - 那么他们至少应该对他们正在做的事情有一个基本的了解。他们不必成为XML专家,就可以使用列出的工具并完成工作。但是,如果要求用户对他们所从事的工作有基本的了解是不可能的,那么我会建议自己编写一个配置实用程序,并将其交付给最终用户,而不是依赖第三方软件。

0

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

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

3

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

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

3

Altova diffDog XML间谍和diffDog是特殊的工具。把它们从我冷冷的手中撬出来,有点儿东西。

0

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

17

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

它是免费的,它可以创建一个相当不错的对比,告诉哪些元素/属性已经改变,移动,删除等:

(很抱歉,如果截图有点宽)。

您也可以申请XLSes到XML文件,并做各种编辑操作。值得一试。

0

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

您可能需要告诉它如何识别单个元素以在文件上完美地工作,但这很容易做到,你只需要做一次。