创建 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 轴返回 IEnumerable<T> 集合的 XElement 和 IEnumerable<T> 集合的 XAttribute。 需要使用这些集合来进行查询。
除了可以检索元素和属性集合的轴方法之外,还有一些轴方法可以让你更加详细地遍历树。 例如,可以使用树的节点,而不是处理元素和属性。 节点比元素和属性更精细的粒度级别。 使用节点时,可以检查 XML 注释、文本节点、处理指令等。 例如,此功能对于正在编写字处理器并希望将文档另存为 XML 的人员非常重要。 但是,大多数 XML 程序员主要关注元素、属性及其值。
检索元素集合的方法
下面是XElement类(或其基类)的方法摘要,这些是你在XElement上调用以返回元素集合的方法。
方法 | DESCRIPTION |
---|---|
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 中获取单个子对象。
方法 | DESCRIPTION |
---|---|
XContainer.Element | 返回具有指定XElement的第一个子XName对象。 |
检索属性集合的方法
以下方法从对象 XElement 中检索属性。
方法 | DESCRIPTION |
---|---|
XElement.Attributes | 返回所有属性的 IEnumerable<T> 的 XAttribute。 |
检索单个属性的方法
以下方法从对象中检索单个 XElement 属性。
方法 | DESCRIPTION |
---|---|
XElement.Attribute | 返回具有指定 XAttribute 的 XName。 |