比较 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 文件进行比较
从当前文件夹浏览器进行比较
要从当前文件夹浏览器中选择两个文件进行比较,请执行下列操作:
对于同一文件夹中的两个文件,选择这些文件,右键点击并选择比较选定的文件/文件夹。
要比较不同文件夹中的文件,请执行下列操作:
选择一个文件,右键点击并选择比较对象。
在“选择要进行比较的文件或文件夹”对话框中选择要比较的第二个文件。
选择比较类型 XML 文本比较。
点击比较。
XML 比较工具对文件执行分析,并在比较工具中显示报告。您右键点击以打开 XML 比较工具的文件显示在报告的右侧。
有关使用比较工具比较其他类型的文件(如文本、MAT 或二进制文件)的详细信息,请参阅比较文件和文件夹以及合并文件。
从比较工具中进行比较
要使用比较工具比较文件,请从 MATLAB® 工具条的文件部分中,选择比较按钮。在对话框中,选择要比较的文件。
如果您选择要比较的文件是 XML 文件,并且您选择了 XML 文本比较,则 XML 比较工具会对 XML 文件执行 Chawathe 分析并生成报告。
从命令行中进行比较
要从命令行比较 XML 文件,请输入
visdiff(filename1, filename2, 'xml')
其中 filename1
和 filename1
是 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 基础工作区,请执行下列操作:
在比较选项卡的比较部分中,选择另存为 > 工作区变量。
“输入变量名称”对话框将出现。
在该对话框中指定导出对象的名称,然后点击确定。此操作会将 XML 比较的结果导出到工作区中的
xmlcomp.Edits
对象。
xmlcomp.Edits
对象包含有关 XML 比较的信息,其中包括文件名、应用的过滤器和两个 XML 文件之间不同的层次结构节点。
要在命令行中创建 xmlcomp.Edits
对象而不打开比较工具,请输入:
Edits = xmlcomp.compare(a.xml,b.xml)
xmlcomp.Edits 的属性 | 描述 |
---|---|
Filters | 过滤器结构体数组的数组。每个结构体都有两个字段,即“名称”和“值”。 |
LeftFileName | XML 比较中左侧文件的文件名。 |
LeftRoot | 引用左侧树根的 xmlcomp.Node 对象。 |
RightFileName | XML 比较中右侧文件的文件名。 |
RightRoot | 引用右侧树根的 xmlcomp.Node 对象。 |
TimeSaved | 结果导出到工作区的时间。 |
Version | xmlcomp.Edits 对象的 MathWorks® 版本号。 |
xmlcomp.Node 的属性 | 描述 |
---|---|
Children | xmlcomp.Node 所引用的子节点构成的数组(如果有)。 |
Edited | 布尔值 - 如果 Edited = true ,则节点是插入项或是经过修改的匹配对组的一部分。 |
Name | 节点的名称。 |
Parameters | 参数结构体数组的数组。每个结构体都有两个字段,即“名称”和“值”。 |
Parent | xmlcomp.Node 所引用的父节点(如果有)。 |
Partner | 如果匹配,Partner 是对另一个树中匹配的伙伴节点的 xmlcomp.Node 引用。否则为空,即 [] 。 |