针对 XPath 用户的 LINQ to XML

更新:November 2007

这组主题演示很多 XPath 表达式及其 LINQ to XML 等效表达式。

所有这些示例都使用 LINQ to XML 中的 XPath 功能,该功能是通过 System.Xml.XPath.Extensions 中的扩展方法实现的。 这些示例既执行 XPath 表达式也执行 LINQ to XML 表达式。 然后,每个示例都对这两种查询的结果进行比较,验证 XPath 表达式与 LINQ to XML 查询的功能等效性。 由于这两种类型的查询都从相同的 XML 树返回节点,因此,查询结果的比较是使用引用标识进行的。

本节内容

主题

说明

XPath 和 LINQ to XML 的比较

概述 XPath 和 LINQ to XML 的异同。

如何:查找子元素 (XPath-LINQ to XML)

将 XPath 子元素轴与 LINQ to XML Element 方法进行比较。

关联的 XPath 表达式为:"DeliveryNotes".

如何:查找子元素列表 (XPath-LINQ to XML)

将 XPath 子元素轴与 LINQ to XML Elements 轴进行比较。

关联的 XPath 表达式为:

"./*"

如何:查找根元素 (XPath-LINQ to XML)

比较如何使用 XPath 和 LINQ to XML 获取根元素。

关联的 XPath 表达式为:

"/PurchaseOrders"

如何:查找后代元素 (XPath-LINQ to XML)

比较如何使用 XPath 和 LINQ to XML 获取具有特定名称的子代元素。

关联的 XPath 表达式为:

"//Name"

如何:根据属性进行筛选 (XPath-LINQ to XML)

比较如何使用 XPath 和 LINQ to XML 获取子代元素,这些子代元素具有指定的名称,并具有一个带指定值的属性。

关联的 XPath 表达式为:

".//Address[@Type='Shipping']"

如何:查找相关元素 (XPath-LINQ to XML)

比较如何使用 XPath 和 LINQ to XML 在由其他元素的值所引用的属性上获取元素选择。

关联的 XPath 表达式为:

".//Customer[@CustomerID=/Root/Orders/Order[12]/CustomerID]"

如何:查找命名空间中的元素 (XPath-LINQ to XML)

比较 XPath XmlNamespaceManager 类与 XName 类的 LINQ to XML Namespace 属性在处理 XML 命名空间时的用法。

关联的 XPath 表达式为:

"./aw:*"

如何:查找前面的同级 (XPath-LINQ to XML)

将 XPath preceding-sibling 轴与 LINQ to XML 子 XNode.ElementsBeforeSelf 轴进行比较。

关联的 XPath 表达式为:

"preceding-sibling::*"

如何:查找子元素的后代 (XPath-LINQ to XML)

比较如何使用 XPath 和 LINQ to XML 获取具有特定名称的子元素的子代元素。

关联的 XPath 表达式为:

"./Paragraph//Text/text()"

如何:查找两个位置路径的联合 (XPath-LINQ to XML)

将 XPath 中的联合运算符 | 与 LINQ to XML 中的 Concat<TSource> 标准查询运算符进行比较。

关联的 XPath 表达式为:

"//Category|//Price"

如何:查找同级节点 (XPath-LINQ to XML)

比较如何使用 XPath 和 LINQ to XML 查找所有具有特定名称的节点同级。

关联的 XPath 表达式为:

"../Book"

如何:查找父元素的属性 (XPath-LINQ to XML)

比较如何使用 XPath 和 LINQ to XML 定位到父元素并查找关联的属性。

关联的 XPath 表达式为:

"../@id"

如何:查找具有特定名称的同级属性 (XPath-LINQ to XML)

比较如何使用 XPath 和 LINQ to XML 查找上下文节点的同级的特定属性。

关联的 XPath 表达式为:

"../Book/@id"

如何:查找具有特定属性的元素 (XPath-LINQ to XML)

比较如何使用 XPath 和 LINQ to XML 查找所有包含特定属性的元素。

关联的 XPath 表达式为:

"./*[@Select]"

如何:根据位置查找子元素 (XPath-LINQ to XML)

比较如何使用 XPath 和 LINQ to XML 根据元素的相对位置查找元素。

关联的 XPath 表达式为:

"Test[position() >= 2 and position() <= 4]"

如何:查找前面紧邻的同级 (XPath-LINQ to XML)

比较如何使用 XPath 和 LINQ to XML 查找节点前面紧邻的同级。

关联的 XPath 表达式为:

"preceding-sibling::*[1]"

请参见

概念

查询 XML 树

使用 XPath 数据模型处理 XML 数据

参考

System.Xml.XPath