示例#1
0
        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);
        }
示例#2
0
        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());
        }
示例#3
0
        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);
        }
示例#4
0
文件: Tests.cs 项目: zanyants/mvp.xml
        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());
        }
示例#5
0
        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());
        }
示例#6
0
        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);
        }
示例#7
0
文件: Tests.cs 项目: zanyants/mvp.xml
		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());
		}
示例#8
0
文件: Tests.cs 项目: zanyants/mvp.xml
		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);
		}
示例#9
0
文件: Tests.cs 项目: zanyants/mvp.xml
		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());
		}
示例#10
0
文件: Tests.cs 项目: zanyants/mvp.xml
		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);
		}
示例#11
0
文件: Tests.cs 项目: zanyants/mvp.xml
		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);
		}
示例#12
0
文件: Tests.cs 项目: zanyants/mvp.xml
		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());
		}