行宽容忍的XML差异


13

我已经看过这个问题的答案,不幸的是,到目前为止,它们都没有帮助我。

为了不打折扣,《深度》中的C#第二版现在处于复制编辑状态。我希望能够真正轻松地查看副本编辑器的工作,因此我可以拒绝或接受他的更改。

我们使用的是docbook的修改形式,但是我很高兴看到原始XML来源。到目前为止,一切都很好-除非复制编辑器进行更改,否则可以更改换行。因此,以前的内容如下:

<para>Foo bar baz
 second line</para>

现在读

<para>Foo bar grontle
 baz second line</para>

现在,这里真正的变化是插入了“ grontle”。我不在乎“ baz”已从第一行移到第二行,但是我所看到的所有差异工具都可以。

我意识到一种选择是将整个文档(或可能只是整个段落)重新格式化为单行...但这真的很难阅读,因为diff工具在显示时不会包装。

我敢肯定,我可以使用自己拥有的工具进行管理,但是如果有人知道更好的东西,我将非常高兴听到它。我怀疑我的出版商也会这样做。

(我在此处添加了Windows标记,因为我确实需要Windows上可以使用它。我也想听听任何非Windows软件,但前提是我可以帮助在Windows上构建它。

Answers:


9

看起来SourceGear DiffMerge会为您提供此功能,它具有对XML(以及许多其他语言)的规则集支持。我不确定它是否可以解决所有问题,因为该示例当然是对实际程序的简化。我尝试了一些更复杂的更改,这些更改似乎也可以正常工作。

请参阅以下示例,了解您描述的差异

简单差异


1
我已经对真实文件进行了快速浏览,看起来它可以很好地完成工作。谢谢你这么多!
乔恩·斯基特

4

我的解决方案是无与伦比的。(一个更强大的工具)

因此,我们首先来看问题。

在此处输入图片说明

BC具有特殊的XML解析角色:(它已经具有XML角色,但是没有预先分析-已排序和整理

在此处输入图片说明

所以我们去http://www.scootersoftware.com/download.php?zz=kb_moreformats_alt

在此处输入图片说明

现在 -

在此处输入图片说明

希望您能将其深入用于下一版C#

ps如果图片中的文字太小,只需单击图片以加载原始文字。


顺便说一句,“ Namir.78 ”是什么意思?
Pacerier,2015年


0

不久前,我在一家公司遇到同样的问题。他们想找到一个真正的“ XML差异”,而且似乎没有任何完整的解决方案。

最简单的解决方案是先在XML上运行漂亮的脚本,以规范行尾和间距,然后运行选择的diff工具(WinMerge适用于Windows)。这消除了大多数difftools会从XML扔给您的很多东​​西,而且很容易构建脚本。


问题在于XML已经有效地打印好了-插入和删除更改了换行的位置。我想知道是否需要基于另一个文件行末尾出现的单词来重新格式化一个文件的方式:(
Jon Skeet 2010年

0

SD Smart Differencer根据结构而不是实际布局比较文档。

有一个XML智能差异器。对于XML,这意味着标签和内容的匹配顺序。应该注意的是,您指定的特定片段中的文本字符串是不同的。(它目前不了解将规范化或重要的空格标准化的文本的XML概念,但我怀疑这不会对您造成很大的伤害)。


0

@Jon Skeet:您在问题中提到,差异工具显示时不会包装。
vimdiff(也可通过Windows在Windows上使用gvim)允许您使用来包装显示的xml文件:window set wrap参考链接
您也可以运行:diffupdate以刷新差异。

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.