Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to compare XML documents

I need to compare two XML chunks:

<elem type="p:type1" xmlns:p="myns" />

<elem type="g:type1" xmlns:g="myns" />

They are semantically equivalent once we see that the type attribute is QName and not just a string. Is there a tool that can do such a comparison once I provide the schema? Also, is there such an API?

like image 315
Yaron Naveh Avatar asked Feb 27 '26 20:02

Yaron Naveh


2 Answers

You could download Xmldiffpatch.exe tool from the MSDN article "Using the XML Diff and Patch Tool in Your Applications"

like image 60
Dmitry Pavlov Avatar answered Mar 01 '26 18:03

Dmitry Pavlov


There are probably many tools that do this, one of them is Xml Diff and Path, via MS XML downloads

The Microsoft XML Diff and Patch utility can be used for comparing two XML documents and then patching the original document with the differences, to create a final document. The utility can detect structural changes (such as the move of an XML subtree) and can create an Xml Diff Language Diffgram (XDL diffgram or just diffgram) that describes the differences between the two XML documents. The diffgram can then be used to display these differences or perform a patch using the XML Patch tool.

XML Diff performs XML-based comparison of the XML documents, as opposed to a common lexical comparison. Therefore, it

Ignores the order attributes. Ignores insignificant white spaces. Does not differentiate between an empty element () and element with no content (). Does not care about the document encoding.

The tools are usable via cmd line and API.

like image 39
Scott Weinstein Avatar answered Mar 01 '26 18:03

Scott Weinstein