public void IsValidAfterSorting() { XmlDocument schemaDoc = new XmlDocument(); schemaDoc.LoadXml( @"<?xml version=""1.0"" encoding=""utf-8""?> <xsd:schema xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns=""http://www.what.com"" targetNamespace=""http://www.what.com""> <xsd:element name=""root""> <xsd:complexType> <xsd:sequence> <xsd:element ref=""a""/> <xsd:element ref=""b""/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name=""a""> <xsd:complexType> <xsd:sequence> <xsd:element ref=""c""/> <xsd:element ref=""d""/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name=""b"" type=""xsd:string""/> <xsd:element name=""c"" type=""xsd:string""/> <xsd:element name=""d"" type=""xsd:string""/> </xsd:schema>"); XmlSchema schema = null; using (MemoryStream memBuf = new MemoryStream()) { schemaDoc.Save(memBuf); memBuf.Flush(); memBuf.Position = 0; schema = XmlSchema.Read(memBuf, null); memBuf.Close(); } XmlDocument doc = new XmlDocument(); doc.LoadXml( @"<?xml version=""1.0"" encoding=""utf-8""?> <root xmlns=""http://www.what.com""> <b>test1</b> <a> <d>test2</d> <c>test3</c> </a> </root>"); XmlDocumentAlterer docAlter = new XmlDocumentAlterer(doc, schema); docAlter.AddNamespace("ns0", "http://www.what.com"); docAlter.SortElements(); Assert.IsTrue(docAlter.IsValid, "not valid"); }
public void RearrangeWithSchema() { XmlDocument schemaDoc = new XmlDocument(); schemaDoc.LoadXml( @"<?xml version=""1.0"" encoding=""utf-8""?> <xsd:schema xmlns:xsd=""http://www.w3.org/2001/XMLSchema""> <xsd:element name=""root""> <xsd:complexType> <xsd:sequence> <xsd:element ref=""a""/> <xsd:element ref=""b""/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name=""a""> <xsd:complexType> <xsd:sequence> <xsd:element ref=""c""/> <xsd:element ref=""d""/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name=""b"" type=""xsd:string""/> <xsd:element name=""c"" type=""xsd:string""/> <xsd:element name=""d"" type=""xsd:string""/> </xsd:schema>"); XmlSchema schema = null; using (MemoryStream memBuf = new MemoryStream()) { schemaDoc.Save(memBuf); memBuf.Flush(); memBuf.Position = 0; schema = XmlSchema.Read(memBuf, null); memBuf.Close(); } XmlDocument doc = new XmlDocument(); doc.LoadXml( @"<?xml version=""1.0"" encoding=""utf-8""?> <root xmlns=""http://www.what.com""> <b>test1</b> <a> <d>test2</d> <c>test3</c> </a> </root>"); XmlDocumentAlterer docAlter = new XmlDocumentAlterer(doc, schema); docAlter.AddNamespace("ns0", "http://www.what.com"); docAlter.SortElements(); Assert.AreEqual("a", doc.DocumentElement.ChildNodes[0].Name); Assert.AreEqual("c", doc.DocumentElement.ChildNodes[0].ChildNodes[0].Name); Assert.AreEqual("test3", doc.DocumentElement.ChildNodes[0].ChildNodes[0].InnerText); Assert.AreEqual("d", doc.DocumentElement.ChildNodes[0].ChildNodes[1].Name); Assert.AreEqual("test2", doc.DocumentElement.ChildNodes[0].ChildNodes[1].InnerText); Assert.AreEqual("b", doc.DocumentElement.ChildNodes[1].Name); Assert.AreEqual("test1", doc.DocumentElement.ChildNodes[1].InnerText); }