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> */