Comparing XmlDocument for equality (content wise)

后端 未结 5 2003
情深已故
情深已故 2020-12-18 19:38

If I want to compare the contents of a XMlDocument, is it just like this?

XmlDocument doc1 = GetDoc1();
XmlDocument doc2 = GetDoc2();

if(doc1 == doc2)
{

}
         


        
5条回答
  •  甜味超标
    2020-12-18 20:39

    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);
            }
        }
    }
    

提交回复
热议问题