使用 Visual C# .NET 通过 XPath 表达式查询 XML
2010-05-18 09:55
633 查看
本文演示如何使用 XPathNavigator 类通过 XML 路径语言 (XPath) 表达式查询 XPathDocument 对象。XPath 用于以编程方式计算表达式并选择文档中的特定节点。
![](http://support.microsoft.com/library/images/support/en-us/uparrow.gif)
回到顶端 要求下面的列表列出了推荐使用的硬件、软件、网络基础结构以及所需的服务包: Visual C# .NET
本文假定您熟悉下列主题: XML 术语 创建和读取 XML 文件 XPath 语法
![](http://support.microsoft.com/library/images/support/en-us/uparrow.gif)
回到顶端 如何用 XPath 表达式查询 XML 在 Visual Studio .NET 中新建一个 Visual C# .NET 控制台应用程序。
备注:本示例使用名为 Books.xml 的文件。您可以创建自己的 Books.xml 文件,也可以使用 .NET 软件开发工具包 (SDK) 快速入门中包括的示例。如果您没有安装"快速入门"而且也不想安装它们,请参阅 Books.xml 下载位置的"参考"部分。如果已经安装了"快速入门",则该文件位于以下文件夹中: Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB 必须将该文件复制到 \Bin\Debug 文件夹,该文件夹位于您在其中创建该项目的文件夹中。
确保该项目引用 System.Xml 名称空间。 在 Xml 和 XPath 名称空间上使用 using 语句,这样以后就不需要在代码中限定这些名称空间中的声明了。using 语句必须在所有其他声明之前使用,如下所示:
声明合适的变量。声明 XPathDocument 对象以保存 XML 文档,声明 XpathNavigator 对象以计算 XPath 表达式,声明 XPathNodeIterator 对象以迭代通过选定节点。声明 String 对象以保存 XPath 表达式。在 Class1 的 Main 函数中添加声明代码。
用示例文件 Books.xml 加载 XPathDocument。XPathDocument 类使用可扩展样式表语言转换 (XSLT) 为 XML 文档处理提供快速和面向性能的缓存。它类似于 XML 文档对象模型 (DOM),但经过了高度优化,以用于 XSLT 处理和 XPath 数据模型。
从文档创建 XPathNavigator。XPathNavigator 对象用于进行只读 XPath 查询。XPath 查询可返回结果值或许多节点。
创建 XPath 表达式以查找图书的平均价格。这个 XPath 表达式返回单个值。有关 XPath 语法的完整详细信息,请参见"参考"部分中的"XPath 语法"。
使用 XPathNavigator 对象的 Evaluate 方法计算 XPath 表达式。Evaluate 方法返回该表达式的结果。
创建 XPath 表达式以查找价格超过 10 美元的所有图书。这个 XPath 表达式只从 XML 源中返回 Title 节点。
为使用 XPathNavigator 的 Select 方法选择的节点创建 XPathNodeIterator。XPathNodeIterator 表示 XPath 节点集,因此它支持针对该节点集执行的操作。
使用从 XPathNavigator 的 Select 方法返回的 XPathNodeIterator 遍历选定的节点。在这种情况下,可使用 XPathNodeIterator 的 MoveNext 方法迭代通过选定的所有节点。
使用 ReadLine 方法在控制台显示的末尾添加 pause,以便更容易地显示上述结果。
生成并运行您的项目。请注意,这些结果显示在控制台窗口中。
![](http://support.microsoft.com/library/images/support/en-us/uparrow.gif)
回到顶端
![](http://support.microsoft.com/library/images/support/en-us/uparrow.gif)
回到顶端 要求下面的列表列出了推荐使用的硬件、软件、网络基础结构以及所需的服务包: Visual C# .NET
本文假定您熟悉下列主题: XML 术语 创建和读取 XML 文件 XPath 语法
![](http://support.microsoft.com/library/images/support/en-us/uparrow.gif)
回到顶端 如何用 XPath 表达式查询 XML 在 Visual Studio .NET 中新建一个 Visual C# .NET 控制台应用程序。
备注:本示例使用名为 Books.xml 的文件。您可以创建自己的 Books.xml 文件,也可以使用 .NET 软件开发工具包 (SDK) 快速入门中包括的示例。如果您没有安装"快速入门"而且也不想安装它们,请参阅 Books.xml 下载位置的"参考"部分。如果已经安装了"快速入门",则该文件位于以下文件夹中: Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB 必须将该文件复制到 \Bin\Debug 文件夹,该文件夹位于您在其中创建该项目的文件夹中。
确保该项目引用 System.Xml 名称空间。 在 Xml 和 XPath 名称空间上使用 using 语句,这样以后就不需要在代码中限定这些名称空间中的声明了。using 语句必须在所有其他声明之前使用,如下所示:
using System.Xml; using System.Xml.XPath;
声明合适的变量。声明 XPathDocument 对象以保存 XML 文档,声明 XpathNavigator 对象以计算 XPath 表达式,声明 XPathNodeIterator 对象以迭代通过选定节点。声明 String 对象以保存 XPath 表达式。在 Class1 的 Main 函数中添加声明代码。
XPathNavigator nav; XPathDocument docNav; XPathNodeIterator NodeIter; String strExpression;
用示例文件 Books.xml 加载 XPathDocument。XPathDocument 类使用可扩展样式表语言转换 (XSLT) 为 XML 文档处理提供快速和面向性能的缓存。它类似于 XML 文档对象模型 (DOM),但经过了高度优化,以用于 XSLT 处理和 XPath 数据模型。
// Open the XML. docNav = new XPathDocument(@"c:\books.xml");
从文档创建 XPathNavigator。XPathNavigator 对象用于进行只读 XPath 查询。XPath 查询可返回结果值或许多节点。
// Create a navigator to query with XPath. nav = docNav.CreateNavigator();
创建 XPath 表达式以查找图书的平均价格。这个 XPath 表达式返回单个值。有关 XPath 语法的完整详细信息,请参见"参考"部分中的"XPath 语法"。
// Find the average cost of a book. // This expression uses standard XPath syntax. strExpression = "sum(/bookstore/book/price) div count(/bookstore/book/price)";
使用 XPathNavigator 对象的 Evaluate 方法计算 XPath 表达式。Evaluate 方法返回该表达式的结果。
// Use the Evaluate method to return the evaluated expression. Console.WriteLine("The average cost of the books are {0}", nav.Evaluate(strExpression));
创建 XPath 表达式以查找价格超过 10 美元的所有图书。这个 XPath 表达式只从 XML 源中返回 Title 节点。
// Find the title of the books that are greater then $10.00. strExpression = "/bookstore/book/title[../price>10.00]";
为使用 XPathNavigator 的 Select 方法选择的节点创建 XPathNodeIterator。XPathNodeIterator 表示 XPath 节点集,因此它支持针对该节点集执行的操作。
// Select the node and place the results in an iterator. NodeIter = nav.Select(strExpression);
使用从 XPathNavigator 的 Select 方法返回的 XPathNodeIterator 遍历选定的节点。在这种情况下,可使用 XPathNodeIterator 的 MoveNext 方法迭代通过选定的所有节点。
Console.WriteLine("List of expensive books:"); //Iterate through the results showing the element value. while (NodeIter.MoveNext()) { Console.WriteLine("Book Title:{0}", NodeIter.Current.Value); };
使用 ReadLine 方法在控制台显示的末尾添加 pause,以便更容易地显示上述结果。
//Pause Console.ReadLine();
生成并运行您的项目。请注意,这些结果显示在控制台窗口中。
![](http://support.microsoft.com/library/images/support/en-us/uparrow.gif)
回到顶端
相关文章推荐
- 使用 Visual C# .NET 通过 XPath 表达式查询 XML
- 使用 Visual C# .NET 通过 XPath 表达式查询 XML
- 使用 Visual C# .NET 通过 XPath 表达式查询 XML
- 使用 System.Xml.XmlDocument 类可在 Visual C#.net 中执行 XPath 查询
- <转>使用 Visual C# .NET 在 XPath 查询中指定完全限定的元素名称
- .NET(C#):使用XPath查询带有命名空间(有xmlns)的XML
- 使用 Visual C# .NET 在 XPath 查询中指定完全限定的元素名称 (From MSDN)
- .NET(C#):使用XPath查询带有命名空间(有xmlns)的XML
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
- HOW TO:使用 Visual C# .NET 向 Microsoft Excel 2002 传输 XML 数据
- 如何使用 Visual C# 2005 或 Visual C# .NET 通过 DataSet 对象更新数据库
- 如何使用 Visual C# 2005 或 Visual C# .NET 通过 DataSet 对象更新数据库
- 使用 Visual C# .NET 向 Microsoft Excel 2002 传输 XML 数据
- 如何使用 AllowPartiallyTrustedCallers 属性来调用具有一个强名称从 Web 页通过使用 Visual C#.NET、 Visual C# 2005年或更高版本的程序集
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
- XML 文件:使用 JScript、C# 和 Visual Basic.NET 扩展 XSLT
- 如何使用 XPath 表达式查询 XML
- 通过代码学习C#&.NET——委托使用(正则表达式替换)
- 311530 HOW TO:在 Visual C# .NET 中使用 System.Xml 合并两个 XML 文档中的数据 (From MKBA)
- 如何通过使用窗体身份验证和 Visual C#.NET 对 Active Directory 验证身份