样例所用的Xml文件:books.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="WEB"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <author>Per Bothner</author> <author>Kurt Cagle</author> <author>James Linn</author> <author>Vaidyanathan Nagarajan</author> <year>2003</year> <price>49.99</price> </book> <book category="WEB"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore>
运行下面的函数
using System.Text; using System.Xml; //参考:http://www.w3school.com.cn/xpath/xpath_intro.asp class Program { static void Main(string[] args) { SelectTitleYearNodes(); } //利用XPath查找XML文档中的信息 static void SelectNodes() { XmlDocument doc = new XmlDocument(); doc.Load("E:\\books.xml"); //倒数第二个book元素 XmlNodeList nodes = doc.SelectNodes("/bookstore/book[last()-1]"); string text; foreach (XmlNode node in nodes) { text = node.OuterXml; } } //输出结果 //<book category="WEB"> // <title lang="en">XQuery Kick Start</title> // <author>James McGovern</author> // <author>Per Bothner</author> // <author>Kurt Cagle</author> // <author>James Linn</author> // <author>Vaidyanathan Nagarajan</author> // <year>2003</year> // <price>49.99</price> //</book> static void SelectPositionNodes() { XmlDocument doc = new XmlDocument(); doc.Load("E:\\books.xml"); //最前面的两个book元素集 XmlNodeList nodes = doc.SelectNodes("/bookstore/book[position()<3]"); StringBuilder sb = new StringBuilder(); string text; foreach (XmlNode node in nodes) { text = node.OuterXml; sb.Append(text); } } //输出结果 //<book category="COOKING"> // <title lang="en">Everyday Italian</title> // <author>Giada De Laurentiis</author> // <year>2005</year> // <price>30.00</price> //</book> //<book category="CHILDREN"> // <title lang="en">Harry Potter</title> // <author>J K. Rowling</author> // <year>2005</year> // <price>29.99</price> //</book> static void SelectPriceNodes() { XmlDocument doc = new XmlDocument(); doc.Load("E:\\books.xml"); //price元素的值须大于35.00的book元素集 XmlNodeList nodes = doc.SelectNodes("/bookstore/book[price>35.00]"); StringBuilder sb = new StringBuilder(); string text; foreach (XmlNode node in nodes) { text = node.OuterXml; sb.Append(text); } } //输出结果 //<book category="WEB"> // <title lang="en">XQuery Kick Start</title> // <author>James McGovern</author> // <author>Per Bothner</author> // <author>Kurt Cagle</author> // <author>James Linn</author> // <author>Vaidyanathan Nagarajan</author> // <year>2003</year> // <price>49.99</price> //</book> //<book category="WEB"> // <title lang="en">Learning XML</title> // <author>Erik T. Ray</author> // <year>2003</year> // <price>39.95</price> //</book> static void SelectTitleNodes() { XmlDocument doc = new XmlDocument(); doc.Load("E:\\books.xml"); //price元素的值须大于35.00的title元素集 XmlNodeList nodes = doc.SelectNodes("/bookstore/book[price>35.00]/title"); StringBuilder sb = new StringBuilder(); string text; foreach (XmlNode node in nodes) { text = node.OuterXml; sb.Append(text); } } //输出结果 //<title lang="en">XQuery Kick Start</title> //<title lang="en">Learning XML</title> static void SelectTitleYearNodes() { XmlDocument doc = new XmlDocument(); doc.Load("E:\\books.xml"); //选取所有book元素的title和year元素 XmlNodeList nodes = doc.SelectNodes("/bookstore/book/title | /bookstore/book/year"); StringBuilder sb = new StringBuilder(); string text; foreach (XmlNode node in nodes) { text = node.OuterXml; sb.Append(text); } } //输出结果 //<title lang="en">Everyday Italian</title> //<year>2005</year> //<title lang="en">Harry Potter</title> //<year>2005</year> //<title lang="en">XQuery Kick Start</title> //<year>2003</year> //<title lang="en">Learning XML</title> //<year>2003</year> }