本文演示如何使用 XPathNavigator
类通过 XML 路径语言 (XPath) 表达式查询 XPathDocument
对象。XPath 用于以编程方式计算表达式并选择文档中的特定节点。
要求
下面的列表列出了推荐使用的硬件、软件、网络基础结构以及所需的服务包:
本文假定您熟悉下列主题:
• |
XML 术语 |
• |
创建和读取 XML 文件 |
• |
XPath 语法 |
返回页首
如何用 XPath 表达式查询 XML
1. |
在 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 文件夹,该文件夹位于您在其中创建该项目的文件夹中。 |
2. |
确保该项目引用 System.Xml
名称空间。 |
3. |
在 Xml
和 XPath
名称空间上使用 using
语句,这样以后就不需要在代码中限定这些名称空间中的声明了。using
语句必须在所有其他声明之前使用,如下所示:
using System.Xml;
using System.Xml.XPath;
|
4. |
声明合适的变量。声明 XPathDocument
对象以保存 XML 文档,声明 XpathNavigator
对象以计算 XPath 表达式,声明 XPathNodeIterator
对象以迭代通过选定节点。声明 String
对象以保存 XPath 表达式。在 Class1 的 Main
函数中添加声明代码。
XPathNavigator nav;
XPathDocument docNav;
XPathNodeIterator NodeIter;
String strExpression;
|
5. |
用示例文件 Books.xml 加载 XPathDocument
。XPathDocument
类使用可扩展样式表语言转换 (XSLT) 为 XML 文档处理提供快速和面向性能的缓存。它类似于 XML 文档对象模型 (DOM),但经过了高度优化,以用于 XSLT 处理和 XPath 数据模型。
// Open the XML.
docNav = new XPathDocument(@"c:\books.xml");
|
6. |
从文档创建 XPathNavigator
。XPathNavigator
对象用于进行只读 XPath 查询。XPath 查询可返回结果值或许多节点。
// Create a navigator to query with XPath.
nav = docNav.CreateNavigator();
|
7. |
创建 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)";
|
8. |
使用 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));
|
9. |
创建 XPath 表达式以查找价格超过 10 美元的所有图书。这个 XPath 表达式只从 XML 源中返回 Title 节点。
// Find the title of the books that are greater then $10.00.
strExpression = "/bookstore/book/title[../price>10.00]";
|
10. |
为使用 XPathNavigator
的 Select
方法选择的节点创建 XPathNodeIterator
。XPathNodeIterator
表示 XPath 节点集,因此它支持针对该节点集执行的操作。
// Select the node and place the results in an iterator.
NodeIter = nav.Select(strExpression);
|
11. |
使用从 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);
};
|
12. |
使用 ReadLine
方法在控制台显示的末尾添加 pause,以便更容易地显示上述结果。
//Pause
Console.ReadLine();
|
13. |
生成并运行您的项目。请注意,这些结果显示在控制台窗口中。 |
分享到:
相关推荐
例如,在Python的`lxml`库中,可以使用`xpath()`方法执行XPath表达式来选取XML元素。 在"xpath学习.doc"文档中,可能详细介绍了XPath的语法、使用方法、示例以及常见问题解决策略。通过阅读这份文档,你可以深入...
这款“XPath表达式测试小工具”显然是为了帮助开发者和XML爱好者更方便地测试和验证XPath表达式的正确性。 在XML文档中,XPath表达式可以用来选取节点集、单个节点、文本值或者布尔值。其基本语法包括路径表达式、...
Xpath(XML Path Language)则是用来在XML文档中查找信息的语言,它允许我们通过路径表达式来选取节点,如元素、属性、文本等。在本主题中,我们将深入探讨基于Xpath的XML文件查询和更新。 **Xpath基本概念** 1. *...
XPath路径表达式选取XML节点.doc 为XML中常用属性说明 XmlHelper.CS 一个类文件 包括对XML 文件的常规操作 xml字符串转换为dataTable DataTable 转换为xml 找出所有与pPath匹配路径的节点创建dataTable,并设置...
XPath表达式的灵活性使得它在处理XML文档时非常强大,可以方便地进行节点选取、数据提取以及复杂的条件过滤。通过熟练掌握XPath,开发者能更高效地操作和解析XML数据,从而在XML相关的开发工作中发挥重要作用。
在实际应用中,XPath 路径表达式可以应用于 DOM、XSLT 和 XQuery 等领域,用于定位节点、解析 XML 文档、实现数据转换和查询等操作。 XPath 路径表达式是 XML 文档处理的重要工具,可以帮助开发者快速、准确地定位...
5. **执行XPath查询**:使用`evaluate`方法执行XPath表达式,并将其结果转换为适当的数据类型。例如,如果查询返回的是节点集,可以使用`NodeList`。 ```java String expression = "/root/element"; NodeList nodes...
### 使用路径表达式在 XML 文档中进行导航 (XPath 简介) #### 一、XPath 的定义 XPath 是一种用于查找 XML 文档中的信息的语言。它使用路径表达式来选择 XML 文档中的节点或集合节点。XPath 被设计为 XSLT、...
// 执行XPath表达式并获取结果 List<Element> elements = xpath.selectNodes(document); for (Element book : elements) { System.out.println("Found book: " + book.attributeValue("title")); } } } ``` ...
XPath 表达式是选择 XML 文件中节点的方法,节点是 XML 文件的最小构成单位,分为 7 种:element(元素节点)、attribute(属性节点)、text (文本节点)、namespace (名称空间节点)、processing-instruction ...
在"表达式验证1.0"中,开发者可以输入XPath表达式,结合XML样本数据进行测试。工具会返回匹配的节点,方便用户验证查询是否正确。 该工具基于.NET Framework 3.5,这是一个由Microsoft开发的成熟且广泛使用的框架,...
在实际应用中,可以根据需求灵活地构造XPath表达式,以高效地提取XML文档中的信息。记住,XPath是XML处理中的强大工具,合理使用能大大提高开发效率。在处理大型XML文档时,使用XPath配合Java进行数据提取,可以避免...
xpath表达式 1. xpath语法 <title lang=eng>Harry Potter</title> <price>999 <title lang=eng>Learning XML</title> <price>888 1.1 选取节点 XPath 使用路径表达式来选取 ...
### Xpath表达式完整实例知识点解析 #### 一、Xpath基本概念 Xpath是一种用于在XML文档中查询和定位节点的语言。它提供了一种简洁有效的方式来选择文档中的元素和属性。 - **节点类型**: - **Element(元素节点...
根据提供的文件信息,我们可以了解到XPath表达式的几个重要知识点: 1.XPath路径表达式的基本概念 XPath使用路径表达式来选取XML文档中的节点或者节点集。基本的XPath表达式包含有nodename,它用于选取所有特定的子...
正则表达式(Regular Expression)和XML(eXtensible Markup Language)是IT领域中两种重要的技术。...在实际开发中,了解并熟练掌握正则表达式和XML的使用,能帮助我们更好地处理文本数据和结构化信息。
例如,`XMLDocument.prototype.selectNodes`方法首先创建一个命名空间解析器,然后使用`evaluate()`方法执行XPath表达式,得到一个结果集,再将结果集转换为数组返回。`XMLDocument.prototype.selectSingleNode`方法...
使用libxml2时,我们需要先用`xmlParseDoc()`解析XML,得到`xmlDocPtr`,然后调用`xmlXPathNewContext()`创建XPath上下文,接着使用`xmlXPathEvalExpression()`执行XPath表达式并获取结果集。 XPath表达式的语法...
这个方法使用XPath表达式 `cXPathString` 在指定的节点 `xNode` 上执行查询,并返回一个包含匹配节点的数组。 ##### 2. 扩展Element ```javascript // 扩展Element原型以添加selectNodes方法 Element.prototype....
这里的"your_xpath_expression"是你想要执行的XPath表达式,例如选取所有名为“element”的元素:“//element”。`selectNodes`方法将返回匹配表达式的节点列表。 对于更复杂的查询,XPath支持谓语,允许你在路径...