public void ConstructWithSchemaObject() { XmlSchema schema = new XmlSchema(); XmlDocumentAlterer docAlter = new XmlDocumentAlterer(schema); Assert.AreSame(schema, docAlter.Schema); }
public void FillInInvalidNodeFails() { XmlDocumentAlterer docAlterer = new XmlDocumentAlterer(); Expression xpath1 = new Expression("/root/a/@b/c"); docAlterer.FillIn(xpath1); }
public void EditLoadedDocument() { XmlDocument doc = new XmlDocument(); doc.LoadXml( @"<root> <a id='1'> <b id='9'>asdf</b> </a> <a id='2'> <b id='8'>qwer</b> </a> <a id='3'> <b id='4'>zxcv</b> </a> </root>" ); XmlDocumentAlterer docAlter = new XmlDocumentAlterer(doc); docAlter.SetValue(new Expression("/root/a[@id=1]/b/@t"), "6"); docAlter.SetValue(new Expression("/root/a[2]/@id"), "somtig"); docAlter.SetValue(new Expression("/root/a[@id='3']/b[@id=4]/c"), "workit"); Assert.AreEqual("6", docAlter.GetValue(new Expression("/root/a[1]/b/@t"), FailureReaction.Ignore)); Assert.AreEqual("somtig", docAlter.GetValue(new Expression("/root/a[2]/@id"), FailureReaction.Ignore)); Assert.AreEqual("workit", docAlter.GetValue(new Expression("/root/a[3]/b/c"), FailureReaction.Ignore)); }
public void EditLoadedDocumentWithNamespaceAndPrefix() { XmlDocument doc = new XmlDocument(); doc.LoadXml( @"<ns0:root xmlns:ns0=""http://www.icsm.org/icsmxml""> <ns0:a id='1'> <ns0:b id='9'>asdf</ns0:b> </ns0:a> <ns0:a id='2'> <ns0:b id='8'>qwer</ns0:b> </ns0:a> <ns0:a id='3'> <ns0:b id='4'>zxcv</ns0:b> </ns0:a> </ns0:root>" ); XmlDocumentAlterer docAlter = new XmlDocumentAlterer(doc); docAlter.AddNamespace("ns0", "http://www.icsm.org/icsmxml"); docAlter.SetValue(new Expression("/root/a[@id=1]/b/@t", "ns0"), "6"); docAlter.SetValue(new Expression("/root/a[2]/@id", "ns0"), "somtig"); docAlter.SetValue(new Expression("/root/a[@id='3']/b[@id=4]/c", "ns0"), "workit"); Assert.AreEqual("6", docAlter.GetValue(new Expression("/root/a[1]/b/@t", "ns0"), FailureReaction.Ignore)); Assert.AreEqual("somtig", docAlter.GetValue(new Expression("/root/a[2]/@id", "ns0"), FailureReaction.Ignore)); Assert.AreEqual("workit", docAlter.GetValue(new Expression("/root/a[3]/b/c", "ns0"), FailureReaction.Ignore)); }
public void SetValueFromStringExpression() { XmlDocumentAlterer docAlter = new XmlDocumentAlterer(); docAlter.SetValue("/root/a", "abc"); Assert.AreEqual("abc", docAlter.GetValue(new Expression("/root/a"), FailureReaction.Ignore)); }
public void SelectParentNode2() { XmlDocument doc = new XmlDocument(); doc.LoadXml( @"<root> <a type='3'/> <a> <b>d</b> </a> <a> <c type='z_val'/> </a> <a> <b>x</b> <c> <d type='x_val'/> </c> </a> <a> <b>y</b> <c> <d type='y_val'/> </c> </a> </root>"); XmlDocumentAlterer docAlter = new XmlDocumentAlterer(doc); Expression exp = new Expression("/root//d[2]/@type"); Expression xpath = new Expression("/root//d[2]/parent::*/parent::*/b"); Assert.AreEqual("y_val", docAlter.GetValue(exp, FailureReaction.Ignore)); Assert.AreEqual("y", docAlter.GetValue(xpath, FailureReaction.Ignore)); }
public void DocumentPropertyReturnsProvidedDocument() { XmlDocument doc = new XmlDocument(); XmlDocumentAlterer docAlter = new XmlDocumentAlterer(doc); Assert.AreSame(doc, docAlter.Document); }
public void CreateElementWithRelativePath() { XmlDocument doc = new XmlDocument(); doc.LoadXml(@"<root> <a type='a_1'> <b>zxcv</b> <b>yuiop</b> </a> <a type='a_2'> <b>hjkl</b> <b>qwert</b> </a> </root>"); Assert.AreEqual(4, doc.SelectNodes("/root//b").Count); XmlDocumentAlterer alter = new XmlDocumentAlterer(doc); Assert.AreEqual(4, alter.CountNodes(new Expression("/root//b"))); Assert.AreEqual("hjkl", alter.GetValue("/root//b[3]", FailureReaction.Ignore)); Expression xpath = new Expression("/root//b[3]/../c"); alter.SetValue(xpath, "qqq"); Expression xpath2 = new Expression("/root/a[@type='a_2']/c"); Assert.AreEqual("qqq", alter.GetValue(xpath2, FailureReaction.Ignore)); }
public void FillInCreatesNodes() { XmlDocumentAlterer docAlter = new XmlDocumentAlterer(); Expression xpath = new Expression("/root"); docAlter.FillIn(xpath); Assert.AreEqual("root", docAlter.Document.DocumentElement.Name); }
public void SelectingNonexistantNodeCreatesIt2() { XmlDocumentAlterer docAlter = new XmlDocumentAlterer(); XmlNode node = docAlter.SelectNodes(new Expression("/root/a[@id='3']/b/c[@date='07-07-2007']/d"))[0]; Assert.AreEqual("d", node.Name); Assert.AreEqual(0, node.ChildNodes.Count); }
public void SelectingNonexistantNodeCreatesIt() { XmlDocumentAlterer docAlter = new XmlDocumentAlterer(); XmlNode node = docAlter.SelectNodes(new Expression("/root"))[0]; Assert.AreEqual("root", node.Name); Assert.AreEqual(0, node.ChildNodes.Count); }
public void FillInWorksForAttributes() { XmlDocumentAlterer docAlter = new XmlDocumentAlterer(); Expression xpath = new Expression("/root/@attr"); docAlter.FillIn(xpath); Assert.AreEqual("root", docAlter.Document.DocumentElement.Name); Assert.AreEqual("attr", docAlter.Document.DocumentElement.Attributes[0].Name); }
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 RetrieveNullWithIgnore() { XmlDocument doc = new XmlDocument(); doc.LoadXml("<root></root>"); XmlDocumentAlterer docAlter = new XmlDocumentAlterer(doc); Assert.IsNull(docAlter.GetValue("/root/a", FailureReaction.Ignore)); }
public void RetrieveEmptyWithNull() { XmlDocument doc = new XmlDocument(); doc.LoadXml("<root><a/></root>"); XmlDocumentAlterer docAlter = new XmlDocumentAlterer(doc); Assert.AreEqual(0, docAlter.GetValue("/root/a", FailureReaction.GenerateErrorOnNull).Length); }
public void GetValueFromStingExpression() { XmlDocument doc = new XmlDocument(); doc.LoadXml("<root><a>asdf</a></root>"); XmlDocumentAlterer docAlter = new XmlDocumentAlterer(doc); Assert.AreEqual("asdf", docAlter.GetValue("/root/a", FailureReaction.Ignore)); }
public void RetrieveValueWithEmpty() { XmlDocument doc = new XmlDocument(); doc.LoadXml("<root><a>asdf</a></root>"); XmlDocumentAlterer docAlter = new XmlDocumentAlterer(doc); Assert.AreEqual("asdf", docAlter.GetValue("/root/a", FailureReaction.GenerateErrorOnEmpty)); }
public void RetrieveNullWithEmpty() { XmlDocument doc = new XmlDocument(); doc.LoadXml("<root></root>"); XmlDocumentAlterer docAlter = new XmlDocumentAlterer(doc); Assert.IsNull(docAlter.GetValue("/root/a", FailureReaction.GenerateErrorOnEmpty)); }
public void Set_GetValue() { XmlDocumentAlterer docAlter = new XmlDocumentAlterer(); Expression xpath = new Expression("/root/a"); string value = "gah"; docAlter.SetValue(xpath, value); Assert.AreEqual(value, docAlter.GetValue(xpath, FailureReaction.Ignore)); }
public void SetValue_2() { XmlDocumentAlterer docAlter = new XmlDocumentAlterer(); Expression xpath = new Expression("/root/a[@id='1']/b"); string value = "sup"; docAlter.SetValue(xpath, value); XmlNode node = docAlter.SelectNodes(xpath)[0]; Assert.AreEqual(value, node.InnerText); }
public void FillInWorksSeveralLevelsDeep() { XmlDocumentAlterer docAlter = new XmlDocumentAlterer(); Expression xpath = new Expression("/root/a/b/c/d"); docAlter.FillIn(xpath); Assert.AreEqual("root", docAlter.Document.DocumentElement.Name); Assert.AreEqual("a", docAlter.Document.DocumentElement.FirstChild.Name); Assert.AreEqual("b", docAlter.Document.DocumentElement.FirstChild.FirstChild.Name); Assert.AreEqual("c", docAlter.Document.DocumentElement.FirstChild.FirstChild.FirstChild.Name); Assert.AreEqual("d", docAlter.Document.DocumentElement.FirstChild.FirstChild.FirstChild.FirstChild.Name); }
public void FillInAssumesPredicates() { XmlDocumentAlterer docAlter = new XmlDocumentAlterer(); Expression xpath = new Expression("/root/a[@id=3]/b"); docAlter.FillIn(xpath); Assert.AreEqual("root", docAlter.Document.DocumentElement.Name); Assert.AreEqual("a", docAlter.Document.DocumentElement.FirstChild.Name); Assert.AreEqual("id", docAlter.Document.DocumentElement.FirstChild.Attributes[0].Name); Assert.AreEqual("3", docAlter.Document.DocumentElement.FirstChild.Attributes[0].Value); Assert.AreEqual("b", docAlter.Document.DocumentElement.FirstChild.FirstChild.Name); }
public void AddingANamespaceAddsItToTheDocument() { XmlDocumentAlterer docAlterer = new XmlDocumentAlterer(); docAlterer.AddNamespace("ns0", "http://www.ns0.com"); docAlterer.FillIn(new Expression("/root/a/b/c")); docAlterer.FillIn(new Expression("/root/a/b/d")); docAlterer.FillIn(new Expression("/root/a/b/e")); docAlterer.FillIn(new Expression("/root/a/f/g")); docAlterer.FillIn(new Expression("/root/a/f/h")); docAlterer.FillIn(new Expression("/root/a/f/i")); }
public void FillInObservesElementIndexing() { XmlDocumentAlterer docAlter = new XmlDocumentAlterer(); Expression xpath1 = new Expression("/root/a[1]/b"); Expression xpath2 = new Expression("/root/a[2]/c"); docAlter.FillIn(xpath1); docAlter.FillIn(xpath2); Assert.AreEqual("root", docAlter.Document.DocumentElement.Name); Assert.AreEqual(2, docAlter.Document.DocumentElement.ChildNodes.Count); Assert.AreEqual("a", docAlter.Document.DocumentElement.ChildNodes[0].Name); Assert.AreEqual("b", docAlter.Document.DocumentElement.ChildNodes[0].FirstChild.Name); Assert.AreEqual("a", docAlter.Document.DocumentElement.ChildNodes[1].Name); Assert.AreEqual("c", docAlter.Document.DocumentElement.ChildNodes[1].FirstChild.Name); }
public void SetValueInMultipleNodesWithFillInDeep() { XmlDocument doc = new XmlDocument(); doc.LoadXml("<root><a></a><a></a></root>"); XmlDocumentAlterer docAlter = new XmlDocumentAlterer(doc); Expression xpath = new Expression("/root/a/b/c/e/@d"); docAlter.SetValue(xpath, "x"); XmlNodeList nodes = doc.SelectNodes(xpath.ToString()); Assert.AreEqual(2, nodes.Count); Assert.AreEqual("x", nodes[0].InnerText, "first node"); Assert.AreEqual("x", nodes[1].InnerText, "second node"); }
public void EditDocument_2() { XmlDocument doc = new XmlDocument(); doc.LoadXml( @"<?xml version=""1.0"" encoding=""utf-8""?> <ICSMXML xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://www.icsm.com/icsmxml""> <Request deploymentMode=""test""> <OrderRequest> <OrderRequestHeader orderDate=""2007-05-24"" dueDate=""2007-05-27"" orderID=""1203074043"" type=""new"" orderType=""regular"" shippingType=""header"" billCustomer=""no""> <CustomerIdentification> <CustomerInfo name=""AccountNumber"">0</CustomerInfo> <CustomerInfo name=""CustomerPONumber"">1</CustomerInfo> <CorporateInfo name=""AccountNumber"">254490</CorporateInfo> <CorporateInfo name=""PurchaseOrder""></CorporateInfo> <CorporateInfo name=""StoreNumber"">9999</CorporateInfo> </CustomerIdentification> </OrderRequestHeader> </OrderRequest> </Request> </ICSMXML>" ); XmlDocumentAlterer docAlter = new XmlDocumentAlterer(doc); docAlter.AddNamespace("ns0", "http://www.icsm.com/icsmxml"); Expression xpath = new Expression("/ICSMXML/Request/OrderRequest/OrderRequestHeader/CustomerIdentification/CorporateInfor[@name=SourceCode]", "ns0"); docAlter.SetValue(xpath, "XYZ"); Assert.AreEqual("XYZ", docAlter.GetValue(xpath, FailureReaction.Ignore)); }
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); }
public void GetValue_null() { XmlDocumentAlterer docAlter = new XmlDocumentAlterer(); Assert.IsNull(docAlter.GetValue(new Expression("/root/a/b"), FailureReaction.Ignore)); }
public void DocumentPropertyReturnsAValue() { XmlDocumentAlterer docAlter = new XmlDocumentAlterer(); Assert.IsNotNull(docAlter.Document); }