Compare XML Files
You can use the Comparison Tool to compare a pair of XML text files. The tool processes the results into a report that you can use to explore the file differences. You can compare XML files with a text comparison or a hierarchical XML comparison.
The XML comparison compares the files using the “Chawathe” algorithm, as described in this paper:
Change Detection in Hierarchically Structured Information, Sudarshan Chawathe, Anand Rajaraman, and Jennifer Widom; SIGMOD Conference, Montreal, Canada, June 1996, pp. 493-504. |
This conference paper is based on work published in 1995: see
http://dbpubs.stanford.edu:8090/pub/1995-45
.
XML comparison reports display in the Comparison Tool. For more information about the Comparison Tool, see Compare Files and Folders and Merge Files.
The XML comparison report shows a hierarchical view of the portions of the two XML files that differ. The report does not show sections of the files that are identical.
If the files are identical or differ only in line break, you see a message reporting there are no differences.
Note
It might not be possible for the analysis to detect matches between previously corresponding sections of files that have diverged too much.
Change detection in the Chawathe analysis is based on a scoring algorithm. Items match if their Chawathe score is above a threshold. The implementation of Chawathe's algorithm uses a comparison pattern that defines the thresholds.
You can select XML files on disk to compare using one of these methods:
Files or Project panel — To compare two XML files on disk, select both files. Then, right-click and select Compare Selected Files/Folders. The Comparison Tool opens the file you select first on the left.
Command Window — Use the
visdiff
function.
Navigate the XML Comparison Report
The XML comparison report shows changes only. The report is a hierarchical view of the differences between two XML text files, and is not a hierarchical view of the original XML data.
To step through differences, use the Comparison tab on the toolstrip. To move to the next or previous group of differences, on the Comparison tab, in the Navigate section, click the arrow buttons to go to the previous or next difference.
You can also click to select items in the hierarchical trees.
Selected items appear highlighted in a box.
If the selected item is part of a matched pair, it is highlighted in a box in both left and right trees.
Report item highlighting indicates the nature of each difference as follows:
Type of report item | Highlighting | Notes |
---|---|---|
Modified | Purple | Modified items are matched pairs that differ between
the two files. When you select a modified item it is
highlighted in a box in both trees. |
Inserted | Blue | When you select an unmatched item it is
highlighted in a box in one tree
only. |
Deleted | Yellow | |
Container | None | Rows with no highlighting indicate a container item
that contains other modified or unmatched
items. |
Use the Comparison tab for the following functions:
Refresh — Run Chawathe analysis again to refresh the comparison report.
Swap Sides — Swap sides and rerun comparison. Runs the Chawathe analysis again.
Save As > HTML — Opens the Save dialog box, where you can choose to save a printable version of the XML comparison report. The report is a noninteractive HTML document of the differences detected by the Chawathe algorithm for printing or archiving a record of the comparison.
Save As > Workspace Variable — Export XML comparison results to workspace.
In the Navigate section, click the arrow buttons (or press Up or Down keys) to go to the previous difference or go to the next difference.
Compare Selected Parameter — Open a new report for the currently selected pair of parameters. Use this when the report cannot display all the details in the Parameters pane, e.g., long character vectors or a script.
Use the View tab controls on the toolstrip for the following functions:
Expand All — Expands every item in the tree.
Tip
Right-click to expand or collapse the hierarchy within the selected tree node.
Collapse All — Collapses all items in the tree to the most compact view possible.
Note
It may not be possible for the analysis to detect matches between previously corresponding sections of files that have diverged too much.
Save Comparison Log Files in a Zip File
Temporary XML comparison files accumulate in
.
These temporary files are deleted when you close the related comparison
report.tempdir
/MatlabComparisons/XMLComparisons/TempDirs/
You can zip the temporary files (such as log files) created during XML comparisons, for sharing or archiving. While the comparison report is open, enter:
xmlcomp.zipTempFiles('c:\work\myexportfolder')
The destination folder must exist. The output reports the zip file name:
Created the zipfile "c:\work\myexportfolder\20080915T065514w.zip"
To view the log file for the last comparison in the MATLAB® Editor, enter:
xmlcomp.showLogFile
Export Results to the Workspace
To export the XML comparison results to the MATLAB base workspace,
On the Comparison tab, in the Comparison section, select Save As > Workspace variable.
The Input Variable Name dialog box appears.
Specify a name for the export object in the dialog box and click OK. This action exports the results of the XML comparison to an
xmlcomp.Edits
object in the workspace.
The xmlcomp.Edits
object contains information about the XML
comparison including file names, filters applied, and hierarchical nodes that differ
between the two XML files.
To create an xmlcomp.Edits
object at the command line without
opening the Comparison Tool,
enter:
Edits = xmlcomp.compare(a.xml,b.xml)
Property of xmlcomp.Edits | Description |
---|---|
Filters | Array of filter structure arrays. Each structure has two fields, Name and Value. |
LeftFileName | File name of left file exported to XML. |
LeftRoot | xmlcomp.Node object that references the root
of the left tree. |
RightFileName | File name of right file exported to XML. |
RightRoot | xmlcomp.Node object that references the root
of the right tree. |
TimeSaved | Time when results exported to the workspace. |
Version | MathWorks® release-specific version number of
xmlcomp.Edits object. |
Property of xmlcomp.Node | Description |
---|---|
Children | Array of xmlcomp.Node references to child
nodes, if any. |
Edited | Boolean — If Edited = true then the
node is either inserted or part of a modified matched pair. |
Name | Name of node. |
Parameters | Array of parameter structure arrays. Each structure has two fields, Name and Value. |
Parent | xmlcomp.Node reference to parent node, if
any. |
Partner | If matched, Partner is an
xmlcomp.Node reference to the matched partner
node in the other tree. Otherwise empty
[] . |