LINQ to XML 轴概述

创建 XML 树或将 XML 文档加载到 XML 树之后,可以进行查询,从而查找元素和属性并检索它们的值。 通过轴方法(也叫做)来检索集合。 一些轴就是 XElementXDocument 类中返回 IEnumerable<T> 集合的方法。 另一些轴是 Extensions 类中的扩展方法。 实现为扩展方法的轴对集合进行操作,然后返回集合。

如同 XElement 类概述 中所述,XElement 对象表示单个元素节点。 元素的内容可以是复杂的(有时称为结构化内容),也可以是简单元素。 简单元素可以是空的,也可以包含值。 如果节点包含结构化内容,则可以使用各种轴方法来检索子代元素的枚举。 最常使用的轴方法是 ElementsDescendants

除了返回集合的轴方法之外,还有两个方法会在 LINQ to XML 查询中经常用到。 Element 方法返回单个 XElementAttribute 方法返回单个 XAttribute

对于很多应用来说,LINQ 查询提供了检查树、从树中提取数据以及转换树的最有效的方法。 LINQ 查询对实现 IEnumerable<T> 的对象进行操作,LINQ to XML 轴返回 XElement 集合的 IEnumerable<T>,以及 XAttribute 集合的 IEnumerable<T>。 需要使用这些集合来进行查询。

除了检索元素和属性集合的轴方法之外,还有一些轴方法可以十分详尽地循环访问树。 例如,可以处理树的节点,而不是处理元素和属性。 节点比元素和属性有更细的粒度。 处理节点时,可以检查 XML 注释、文本节点、处理指令以及其他方面。 该功能很重要,例如对正在编写字处理器并希望将文档保存为 XML 的用户非常有用。 但是,大部分 XML 程序员主要关心的是元素、属性和它们的值。

用于检索元素集合的方法

下面是 XElement 类(或其基类)的方法汇总,您可以对 XElement 调用这些方法以返回元素集合。

方法 说明
XNode.Ancestors 返回此元素的上级的 IEnumerable<T>XElement。 重载方法返回上级的 IEnumerable<T>XElement,这些上级具有指定的 XName
XContainer.Descendants 返回此元素的子代的 IEnumerable<T>XElement。 重载方法返回子代的 IEnumerable<T>XElement,这些子代具有指定的 XName
XContainer.Elements 返回此元素的子元素的 IEnumerable<T>XElement。 重载方法返回子元素的 IEnumerable<T>XElement,这些子元素具有指定的 XName
XNode.ElementsAfterSelf 返回此元素之后的元素的 IEnumerable<T>XElement。 重载方法返回此元素之后的元素的 IEnumerable<T>XElement,此元素之后的这些元素具有指定的 XName
XNode.ElementsBeforeSelf 返回此元素之前的元素的 IEnumerable<T>XElement。 重载方法返回此元素之前的元素的 IEnumerable<T>XElement,此元素之前的这些元素具有指定的 XName
XElement.AncestorsAndSelf 返回此元素及其上级的 IEnumerable<T>XElement。 重载方法返回元素的 IEnumerable<T>XElement,这些元素具有指定的 XName
XElement.DescendantsAndSelf 返回此元素及其子代的 IEnumerable<T>XElement。 重载方法返回元素的 IEnumerable<T>XElement,这些元素具有指定的 XName

用于检索单个元素的方法

下面的方法从 XElement 对象中检索单个子级。

方法 说明
XContainer.Element 返回具有指定 XElement 的第一个子 XName 对象。

用于检索属性集合的方法

下面的方法从 XElement 对象中检索属性。

方法 说明
XElement.Attributes 返回所有属性的 IEnumerable<T>XAttribute

用于检索单个属性的方法

下面的方法从 XElement 对象中检索单个属性。

方法 说明
XElement.Attribute 返回具有指定 XAttributeXName