This project contains:
- A library for loosely comparing XML documents, useful for comparing the XML documents used as messages in various specifications and for configuration files:
- Order of sibling elements is ignored.
- Namespace prefixes are ignored (namespace must still match but the prefix used can be different).
- Namespace definition (xmlns attribute) location is ignored: as long as the namespaces are correctly defined it doesn't matter where the xmlns attribute is located in the file.
- Assumes a single text node at the bottom of the XML document tree; so text nodes in an element are concatenated before comparison,
- Comments are ignored.
- NUnit support.
- Utility classes for discovering the XPath of supported .Net XObjects (XElement, XAttribute, XText, XCData and XComment). These classes can also be used standalone.
You can read about how this project came to be in
this blog post
Code for this project is available as Nuget Packages:
XmlSpecificationCompare full binary package
XmlSpecificationCompare compare class only
XPath discovery utility classes