If I want to compare the contents of a XMlDocument, is it just like this?
XmlDocument doc1 = GetDoc1();
XmlDocument doc2 = GetDoc2();
if(doc1 == doc2)
{
}
Often You want to compare XML strings ordered differently. This can be done easy with this code
class Testing
{
[Test]
public void Test()
{
Assert.AreEqual(
" ".SortXml()
, " ".SortXml());
}
}
public static class XmlCompareExtension
{
public static string SortXml(this string @this)
{
var xdoc = XDocument.Parse(@this);
SortXml(xdoc);
return xdoc.ToString();
}
private static void SortXml(XContainer parent)
{
var elements = parent.Elements()
.OrderBy(e => e.Name.LocalName)
.ToArray();
Array.ForEach(elements, e => e.Remove());
foreach (var element in elements)
{
parent.Add(element);
SortXml(element);
}
}
}