有没有免费的Xml差异/合并工具?[关闭]


105

我的.net应用程序中有几个配置文件,我想合并应用程序设置元素等。

我打算像往常一样开始手动进行此操作,但是认为必须在某处提供XML diff GUI工具。

该工具将能够转到元素级别以比较和显示差异等。

但是,Google没有提供任何实质性的免费工具结果,也没有提供任何有价值的提示。

有这样的工具吗?那很有用吗?免费?

提前致谢。:)

编辑:

以下是对功能的一些说明,这些功能会将我容易出错的乏味的手动工作变成了1分钟的简单任务(并且有可能实现自动化):

在KDiff3中,您可以对整个目录进行差异/合并。有一个非常准确,用户友好和清晰的分层差异。我对寻找一种类似的解决方案很感兴趣,但是不是目录层次结构,而是XML元素层次结构。

如果没有这样的开源软件,我正在考虑在CodePlex上创建一个提供此功能的软件。

Answers:


11

KDiff3不是特定于XML的,但是它是免费的。它在比较和合并文本文件方面做得很好。


3
我同意我目前正在使用KDiff3,但是专门用于XML的工具可能会下降到元素级别,这将是非常棒的。
罗素

2
我从这个角度思考:KDiff进行目录的分层比较的方式,元素的分层比较的方式也可以工作。因此,如果某个元素已更改,那么我同意,还应将父元素标记为已更改。
罗素

25
每个人都意识到,在xml中,不能保证子节点的顺序是特定的,因此任何报告从一个文件到下一个文件的顺序都不相同的“工具”都将不是真正的xml兼容工具

7
如果顺序更改,则元素不同。根据所讨论的XML文档的语义,顺序可能很重要,也可能不太重要。例如,在XHTML中,顺序显然很重要。
乔治·隆德2013年

7
关键是常规的差异工具基于行工作。有一些特定的差异工具,例如CSV文件,可以了解其差异格式。理解得越好,进行区分的效果就越好。一个好的XML差异工具将能够解析XML,使用模式来确定约束(例如顺序是否重要),然后使用该知识来提供更有效的差异/合并体验。
Stijn de Witt

32

看一下我使用WinMerge的文件比较工具。它具有比较XML文档的功能(您可能希望启用预过滤器)。DisplayXMLFiles

DisplayXMLFiles.dll-该插件通过插入制表符和换行符来很好地打印XML文件。这对于在方便位置没有换行的XML文件很有用。

WinMerge实战

另请参阅我的功能比较表


6
+1 Winmerge版本2.12.4.0; 菜单“插件”->“列表”->选中“启用插件”;菜单“插件”->选中“自动拆箱”。使用扩展名为.xml的XML文件进行了测试,它似乎可以正常工作。
亚历山德罗·贾科普森

10
它不能很好地处理属性以不同顺序排列的情况,因此它的有用性可能会受到限制,具体取决于您的情况。
Michael Kohne'3

首先在任何XML文件上使用此转换来排序元素和属性: stackoverflow.com/questions/4091085/xslt-to-sort-nodes-by-name
LarryDavid 2014年

1
看起来该插件不再可用。
费尔南多·冈萨雷斯·桑切斯

我不确定为什么它不在安装程序中,但是我能够从其在bitbucket /源代码(sourceforge DL)上的src存储库中获取它:bitbucket.org/winmerge/winmerge/src/…–
aCodeMonkey

21

我编写并发布了Windows应用程序,该应用程序专门解决了比较和合并XML文件的问题。

项目:合并可以执行任何XML文件的两种和三种方式的比较和合并(其中两个文件被认为是公共基础文件的独立修订版)。您可以指示它通过属性值或子元素的内容等来识别输入文件中的元素。

它可以通过命令行完全控制,还可以生成包含文件之间差异的文本报告。

项目:合并三个XML文件


您好@James感谢您提供信息。显然,如果它是免费的,那会很好,但是它确实提供了一些非常酷的功能-上面的示例很好地说明了此工具为何如此有用!感谢您的帖子。:)
罗素

我已经尝试了Project :: Merge,但是不幸的是它无法应付我的任务。我在第HTML文本(<p>),它被添加格式(如<i><em>)。因此Project :: Merge显示完整的para已更改,因此不进行深入的单词分析。
dma_k 2011年

是的,很遗憾地说,在这方面,XHTML(永远不会做旧的HTML)支持非常有限,通常XML块中的文本差异也是如此。到目前为止,大多数工作都集中在配置样式的XML文件上,其中自由格式字符数据的范围和使用受到限制。希望我会改进Project:在以后的版本中合并在这一领域。

2
-1,OP询问免费软件。Project Merge是试用软件,并且在3年内没有更新。
yourbuddypal 2014年

3
Project:Merge现在已由Oso XML Merge取代:osocorporation.com/xmlmerge/index.php
leetNightshade


3

我使用TortoiseSVN程序中包含的TortoiseMerge

而且我们已经讨论了该线程中的File Diff工具,尽管该工具不专用于XML

/programming/1830962/file-differencing-software-on-windows


1
谢谢S.Mark,正如我在epotter上提到的,我已经将KDiff3用于一般文件差异,但是如果有可用的话,我真的更喜欢XML特定的差异实用程序(如果没有,我将启动一个开源的::))
罗素

>> (if not, I will start up an open-source one :)哇,太好了!会很期待的,如果链接开始,请在此处放置链接。

3

虽然这不是GUI工具,但我的快速测试表明diffxml具有一定的前景。作者似乎已经考虑过以标准化方式(他的DUL-Delta更新语言规范)表示嵌套元素的差异的复杂性。

安装并运行他的工具,我可以说原始文本输出非常清晰简洁。它不能提供与GUI工具相同的立即理解程度,但是考虑到输出被标准化为DUL,也许您可​​以采用它并构建一个工具来生成视觉表示。我当然希望看到一个。

作者的“链接”部分确实引用了其他一些XML差异工具,但是正如您在文章中提到的那样,它们都是专有的。


4
我的经验是:它根本无法处理元素的重新排序,这是XML工具所期望的(作为一种选择,因为有时顺序很重要),并且它显示了整个更改的元素,而不是最小的差异。如果存在主要的格式更改而没有较大的语义更改,则diff文件基本上只是一个全新的XML文件。
SilverbackNet

3

Pretty Diff工具在创建时就考虑了XML。只要确保您单击“标记”选项即可。

http://prettydiff.com/


但这是在线工具,对吗?如何应用从左到右的更改或合并?
dma_k 2011年

您还需要更改排序选项,否则在移动所有元素时将XML元素标记为已更改(XML中顺序无关紧要,因此不应显示为更改)。但是,它仍然不会根据嵌套部分的内容对它们进行排序,因此,当所有发生的都是元素更改顺序时,您仍然会看到大型XML块的添加和删除,因此不可能获得细粒度的diff。
恶意




0

我建议您使用CodeCompare工具。它支持XML数据的本地突出显示,并且可以很好地解决您的任务。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.