Main Content

比较 XML 文件

您可以使用比较工具来比较一对 XML 文本文件。该工具将结果处理成一份报告,您可以使用该报告来浏览文件差异。您可以使用文本比较或层次化的 XML 比较对不同的 XML 文件进行比较。

您可以从当前文件夹浏览器或比较工具访问 XML 比较工具,也可以使用 visdiff 函数以编程方式访问。

XML 比较使用“Chawathe”算法来比较文件,如以下论文所述:

Change Detection in Hierarchically Structured Information, Sudarshan Chawathe, Anand Rajaraman, and Jennifer Widom; SIGMOD Conference, Montreal, Canada, June 1996, pp. 493-504.

此会议论文基于 1995 年公布的研究成果,请参阅 http://dbpubs.stanford.edu:8090/pub/1995-45

XML 比较报告显示在比较工具中。有关比较工具的详细信息,请参阅比较文件和文件夹以及合并文件

XML 比较报告以层次结构视图显示两个 XML 文件的不同部分。该报告不显示文件的相同部分。

如果文件完全相同,您会看到一条消息,说明没有差异。

注意

如果文件中原本对应的部分现在差异过大,则分析可能无法检测其匹配情况。

Chawathe 分析中的变化检测基于评分算法。如果两个项的 Chawathe 得分超过阈值,则表示它们是匹配项。Chawathe 算法的实现使用一种定义阈值的比较模式。

选择 XML 文件进行比较

从当前文件夹浏览器进行比较

要从当前文件夹浏览器中选择两个文件进行比较,请执行下列操作:

  • 对于同一文件夹中的两个文件,选择这些文件,右键点击并选择比较选定的文件/文件夹

  • 要比较不同文件夹中的文件,请执行下列操作:

    1. 选择一个文件,右键点击并选择比较对象

    2. 在“选择要进行比较的文件或文件夹”对话框中选择要比较的第二个文件。

    3. 选择比较类型XML 文本比较”。

    4. 点击比较

XML 比较工具对文件执行分析,并在比较工具中显示报告。您右键点击以打开 XML 比较工具的文件显示在报告的右侧。

有关使用比较工具比较其他类型的文件(如文本、MAT 或二进制文件)的详细信息,请参阅比较文件和文件夹以及合并文件

从比较工具中进行比较

要使用比较工具比较文件,请从 MATLAB® 工具条的文件部分中,选择比较按钮。在对话框中,选择要比较的文件。

如果您选择要比较的文件是 XML 文件,并且您选择了 “XML 文本比较”,则 XML 比较工具会对 XML 文件执行 Chawathe 分析并生成报告。

从命令行中进行比较

要从命令行比较 XML 文件,请输入

visdiff(filename1, filename2, 'xml')

其中 filename1filename1 是 XML 文件。

选择比较类型

如果您使用当前文件夹浏览器或 visdiff 函数指定两个要比较的 XML 文件,则比较工具会对所选文件执行默认比较类型。您可以使用文本比较或层次化的 XML 比较对不同的 XML 文件进行比较。

要更改比较类型,请从比较工具创建新比较,或从当前文件夹浏览器中使用比较对象选项。可以在“选择要比较的文件或文件夹”对话框中更改比较类型。在点击比较之前,请先选择 “XML text comparison”。

在 XML 比较报告中导航

XML 比较报告仅显示更改。该报告是两个 XML 文本文件之间差异的层次结构视图,而不是原始 XML 数据的层次结构视图。

逐一查看不同之处,请使用工具条上的比较选项卡。要转到下一组或上一组差异,请在比较选项卡上的导航部分中,点击箭头按钮转到上一项或下一项差异。

您也可以在层次结构树中通过点击选择各项。

  • 所选项在框中突出显示。

  • 如果所选项是匹配对组的一部分,则该项会在左右两侧树的框中同时突出显示。

报告项的突出显示反映了各项差异的性质,具体如下所示:

报告项的类型高亮显示注释
已修改紫色

已修改的项是两个文件之间存在差异的匹配对组。当您选择已修改的项时,它会在两侧树的框中同时突出显示。
所选对组中已经更改的参数会显示在下方。

插入项蓝色

当您选择不匹配的项时,它仅在一侧树的框中突出显示。

删除项黄色
容器

没有突出显示的行表示一个容器项,其中包含其他经过修改或不匹配的项。

使用比较选项卡可执行以下功能:

  • 刷新 - 再次运行 Chawathe 分析以刷新比较报告。

  • 交换位置 - 交换位置并重新运行比较。再次运行 Chawathe 分析。

  • 另存为 > HTML - 打开“保存”对话框,您可以在其中选择保存可打印版本的 XML 比较报告。该报告包含由 Chawathe 算法检测到的差异,是非交互式 HTML 文档,用于打印或存档比较记录。

  • 另存为 > 工作区变量 - 将 XML 比较结果导出到工作区。

  • Navigate 部分中,点击箭头按钮(或按向上键或向下键)转到上一项差异或转到下一项差异。

  • 比较选定参数 - 打开针对当前选定参数对组的新报告。当报告不能在“参数”窗格中显示所有详细信息时(例如,脚本或长字符向量),使用此选项。

使用工具条上的视图选项卡控件可执行以下功能:

  • 全部展开 - 展开树中的每个项。

    提示

    右键点击可展开或折叠所选树节点中的层次结构。

  • 全部折叠 - 将树中的所有项折叠为尽可能紧凑的视图。

注意

如果文件中原本对应的部分现在差异过大,则分析可能无法检测其匹配情况。

将比较日志文件保存在 Zip 文件中

临时 XML 比较文件会在 tempdir/MatlabComparisons/XMLComparisons/TempDirs/ 中累积。当您关闭相关的比较报告时,这些临时文件将同时删除。

您可以压缩在 XML 比较期间创建的临时文件(如日志文件),以用于共享或存档。在比较报告打开时,输入:

xmlcomp.zipTempFiles('c:\work\myexportfolder')

目标文件夹必须存在。输出会报告 zip 文件名称:

Created the zipfile "c:\work\myexportfolder\20080915T065514w.zip"

要在 MATLAB 编辑器中查看上次比较的日志文件,请输入:

xmlcomp.showLogFile

将结果导出到工作区

要将 XML 比较结果导出到 MATLAB 基础工作区,请执行下列操作:

  1. 比较选项卡的比较部分中,选择另存为 > 工作区变量

    “输入变量名称”对话框将出现。

  2. 在该对话框中指定导出对象的名称,然后点击确定。此操作会将 XML 比较的结果导出到工作区中的 xmlcomp.Edits 对象。

xmlcomp.Edits 对象包含有关 XML 比较的信息,其中包括文件名、应用的筛选器和两个 XML 文件之间不同的层次结构节点。

要在命令行中创建 xmlcomp.Edits 对象而不打开比较工具,请输入:

Edits = xmlcomp.compare(a.xml,b.xml) 

xmlcomp.Edits 的属性说明
Filters筛选器结构体数组的数组。每个结构体都有两个字段,即“名称”和“值”。
LeftFileNameXML 比较中左侧文件的文件名。
LeftRoot引用左侧树根的 xmlcomp.Node 对象。
RightFileNameXML 比较中右侧文件的文件名。
RightRoot引用右侧树根的 xmlcomp.Node 对象。
TimeSaved结果导出到工作区的时间。
Versionxmlcomp.Edits 对象的 MathWorks® 版本号。
xmlcomp.Node 的属性说明
Childrenxmlcomp.Node 所引用的子节点构成的数组(如果有)。
Edited布尔值 - 如果 Edited = true,则节点是插入项或是经过修改的匹配对组的一部分。
Name节点的名称。
Parameters参数结构体数组的数组。每个结构体都有两个字段,即“名称”和“值”。
Parentxmlcomp.Node 所引用的父节点(如果有)。
Partner如果匹配,Partner 是对另一个树中匹配的伙伴节点的 xmlcomp.Node 引用。否则为空,即 []

相关主题