Mega Code Archive

 
Categories / C# Tutorial / XML
 

Use the XPath return type to determine how to process the XPath expression

using System; using System.Xml; using System.Xml.XPath; public class XPathExpressionExample {     public static void Main()     {         XPathDocument document = new XPathDocument("contosoBooks.xml");         XPathNavigator navigator = document.CreateNavigator();         XPathExpression expression1 = XPathExpression.Compile(".//bk:price/text()*10"); // Returns a number.         XPathExpression expression2 = XPathExpression.Compile("bk:bookstore/bk:book/bk:price"); // Returns a nodeset.         XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);         manager.AddNamespace("bk", "http://www.yourname.com/books");         expression1.SetContext(manager);         expression2.SetContext(manager);         Evaluate(expression1, navigator);         Evaluate(expression2, navigator);     }     public static void Evaluate(XPathExpression expression, XPathNavigator navigator)     {         switch (expression.ReturnType)         {             case XPathResultType.Number:                 Console.WriteLine(navigator.Evaluate(expression));                 break;             case XPathResultType.NodeSet:                 XPathNodeIterator nodes = navigator.Select(expression);                 while (nodes.MoveNext())                 {                     Console.WriteLine(nodes.Current.ToString());                 }                 break;             case XPathResultType.Boolean:                 if ((bool)navigator.Evaluate(expression))                     Console.WriteLine("True!");                 break;             case XPathResultType.String:                 Console.WriteLine(navigator.Evaluate(expression));                 break;         }     } } /* <bookstore xmlns="http://www.yourname.com/books">     <book genre="autobiography" publicationdate="1999-12-12" ISBN="1-111111-11-1">         <title>A</title>         <author>             <first-name>X</first-name>             <last-name>Y</last-name>         </author>         <price>8.99</price>     </book>     <book genre="novel" publicationdate="2000-01-01" ISBN="0-201-63361-2">         <title>Java</title>         <author>             <first-name>Q</first-name>             <last-name>Q</last-name>         </author>         <price>11.99</price>     </book>     <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-22222-57-6">         <title>C#</title>         <author>             <name>Author</name>         </author>         <price>9.99</price>     </book> </bookstore> */