LINQ to XML 轴概述
创建 XML 树或将 XML 文档加载到 XML 树之后,可以进行查询,从而查找元素和属性并检索它们的值。 通过轴方法(也叫做轴)来检索集合。 一些轴就是 XElement 和 XDocument 类中返回 IEnumerable<T> 集合的方法。 另一些轴是 Extensions 类中的扩展方法。 实现为扩展方法的轴对集合进行操作,然后返回集合。
如同 XElement 类概述 中所述,XElement 对象表示单个元素节点。 元素的内容可以是复杂的(有时称为结构化内容),也可以是简单元素。 简单元素可以是空的,也可以包含值。 如果节点包含结构化内容,则可以使用各种轴方法来检索子代元素的枚举。 最常使用的轴方法是 Elements 和 Descendants。
除了返回集合的轴方法之外,还有两个方法会在 LINQ to XML 查询中经常用到。 Element 方法返回单个 XElement。 Attribute 方法返回单个 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 | 返回具有指定 XAttribute 的 XName。 |