public void ExposingXmlFragment() { string xml = @" <library> <book genre='novel' ISBN='1-861001-57-5'> <title>Pride And Prejudice</title> </book> <book genre='novel' ISBN='1-81920-21-2'> <title>Hook</title> </book> </library>"; XPathNavigator nav = new XPathDocument(new StringReader(xml)).CreateNavigator(); // <library> nav.MoveToFirstChild(); // <book> nav.MoveToFirstChild(); // Enable fragment reading. XPathNavigatorReader reader = new XPathNavigatorReader(nav, true); reader.MoveToContent(); string books = reader.ReadFragmentXml(); Assert.AreEqual( "<book genre=\"novel\" ISBN=\"1-861001-57-5\"><title>Pride And Prejudice</title></book><book genre=\"novel\" ISBN=\"1-81920-21-2\"><title>Hook</title></book>", books); }
public void Reading() { Stream stm = Globals.GetResource(Globals.PubsNsResource); XmlTextReader tr = new XmlTextReader(stm); XPathDocument doc = new XPathDocument(tr); XPathNavigator nav = doc.CreateNavigator(); // Dumps the entire document to output. XmlTextWriter tw = new XmlTextWriter(Console.Out); tw.WriteNode(new XPathNavigatorReader(nav), true); // Perform a query, then dump the first node (OuterXml) from the result. nav = doc.CreateNavigator(); XmlNamespaceManager mgr = new XmlNamespaceManager(nav.NameTable); mgr.AddNamespace("mvp", "mvp-xml"); XPathNodeIterator it = XPathCache.Select("//mvp:titles[mvp:title_id='BU2075']", nav, mgr); if (it.MoveNext()) { XmlReader title = new XPathNavigatorReader(it.Current); // As it's a regular reader, we must first move it to content as usual. title.MoveToContent(); Console.WriteLine(title.ReadOuterXml()); } // Perform arbitrary movements, then serialize inner content. nav = doc.CreateNavigator(); nav.MoveToFirstChild(); nav.MoveToFirstChild(); Console.WriteLine(new XPathNavigatorReader(nav).ReadInnerXml()); }
public void XmlReaderNames() { string xml = "<customer id='1' pp:id='aba' xmlns='urn-kzu' xmlns:pp='urn-pepenamespace'><pp:order /><order id='1'>Chocolates</order></customer>"; XPathNavigator nav = new XPathDocument(new StringReader(xml)).CreateNavigator(); XmlReader reader = new XPathNavigatorReader(nav); reader.MoveToContent(); Assert.AreEqual("customer", reader.Name); reader.MoveToFirstAttribute(); Assert.AreEqual("id", reader.Name); reader.MoveToNextAttribute(); Assert.AreEqual("pp:id", reader.Name); // Namespace order is not guaranteed. reader.MoveToNextAttribute(); Assert.IsTrue(reader.Name == "xmlns:pp" || reader.Name == "xmlns"); reader.MoveToNextAttribute(); Assert.IsTrue(reader.Name == "xmlns:pp" || reader.Name == "xmlns"); reader.MoveToElement(); reader.Read(); Assert.AreEqual("pp:order", reader.Name); }
public void TestRead() { XPathDocument doc = new XPathDocument(Globals.GetResource(Globals.LibraryResource)); //Navigator over first child of document element XPathNavigator nav = doc.CreateNavigator(); nav.MoveToRoot(); nav.MoveToFirstChild(); nav.MoveToFirstChild(); XPathNavigatorReader r = new XPathNavigatorReader(nav); r.MoveToContent(); Console.WriteLine(r.ReadOuterXml()); }
public void MoveToContent() { string xml = @"<root><element>1</element><element></element><element>2</element></root>"; XPathNavigator nav = new XPathDocument(new StringReader(xml)).CreateNavigator(); XmlReader reader = new XPathNavigatorReader(nav); reader.MoveToContent(); Console.WriteLine(reader.ReadOuterXml()); reader = new XmlTextReader(new StringReader(xml)); reader.MoveToContent(); Console.WriteLine(reader.ReadOuterXml()); }
public void ReadInnerXml() { string xml = @" <content type='application/xhtml+xml' xml:base='http://loluyede.blogspot.com' xml:lang='en-US' xml:space='preserve'> <div xmlns='http://www.w3.org/1999/xhtml'>I have 3 accounts to give away, let me know if you want them</div> </content>"; XPathDocument doc = new XPathDocument(new StringReader(xml)); XPathNavigator nav = doc.CreateNavigator(); XPathNavigatorReader r = new XPathNavigatorReader(nav); r.MoveToContent(); string content = r.ReadInnerXml(); Assert.AreEqual( "\r\n\t<div xmlns=\"http://www.w3.org/1999/xhtml\">I have 3 accounts to give away, let me know if you want them</div>\r\n", content); }
public void ExposingSubtreeXmlFragment() { string xml = @" <library> <book genre='novel' ISBN='1-861001-57-5'> <title>Pride And Prejudice</title> </book> <book genre='novel' ISBN='1-81920-21-2'> <title>Hook</title> </book> </library>"; XPathNavigator nav = new XPathDocument(new StringReader(xml)).CreateNavigator(); // <library> nav.MoveToFirstChild(); // <book> nav.MoveToFirstChild(); SubtreeeXPathNavigator sub = new SubtreeeXPathNavigator(nav, true); // Enable fragment reading. XPathNavigatorReader reader = new XPathNavigatorReader(sub, true); reader.MoveToContent(); string books = reader.ReadFragmentXml(); sub.MoveToRoot(); reader = new XPathNavigatorReader(sub, true); reader.MoveToContent(); string books2 = reader.ReadFragmentXml(); Assert.AreEqual(books, books2); Assert.AreEqual( "<book genre=\"novel\" ISBN=\"1-861001-57-5\"><title>Pride And Prejudice</title></book><book genre=\"novel\" ISBN=\"1-81920-21-2\"><title>Hook</title></book>", books); }
public void XmlReaderNames() { string xml = "<customer id='1' pp:id='aba' xmlns='urn-kzu' xmlns:pp='urn-pepenamespace'><pp:order /><order id='1'>Chocolates</order></customer>"; XPathNavigator nav = new XPathDocument(new StringReader(xml)).CreateNavigator(); XmlReader reader = new XPathNavigatorReader(nav); reader.MoveToContent(); Assert.AreEqual("customer", reader.Name); reader.MoveToFirstAttribute(); Assert.AreEqual("id", reader.Name); reader.MoveToNextAttribute(); Assert.AreEqual("pp:id", reader.Name); // Namespace order is not guaranteed. reader.MoveToNextAttribute(); Assert.IsTrue( reader.Name == "xmlns:pp" || reader.Name == "xmlns" ); reader.MoveToNextAttribute(); Assert.IsTrue( reader.Name == "xmlns:pp" || reader.Name == "xmlns" ); reader.MoveToElement(); reader.Read(); Assert.AreEqual("pp:order", reader.Name); }