LINQ to XML 轴
定义:
创建XML树或将XML文档加载到XML树之后,可以进行查询,从而查找元素并检索它们的值。
两类轴方法:
-一些轴就是XELement和XDocument类中返回IEnumerable(T)集合的方法。
-另一些轴方法是Extensions类中的扩展方法。实现为扩展方法的轴对集合进行操作,然后返回集合。
XContainer是XElement的基类!
-常见的轴方法:
-XContainer.Elements()返回集合
-XContainer.Descendants()返回集合
-XContainer.Element()返回单个元素
-XElement.Attribute(XName)返回单个属性
-XElement.Attributes(XName)返回所有属性集合
下面是XElement类(或其基类)的方法汇总,可以对XElement调用这些方法以返回元素集合
-XNode.Ancestors
-返回此元素的上级的XElement的IEnumerable(T)
-XContainer.Descendants
-返回此元素的子代的XElement的IEnumerable(T)
-XContainer.Elements
-返回此元素的子元素XElement的IEnumerable(T)
-XNode.ElementsAfterSelf
-返回此元素之后的元素的XElement的IEnumerable(T)
-XNode.ElementsBeforeSelf
-返回此元素之前的元素的XElement的IEnumerable(T)
-XElement.AncestorsAndSelf
-返回此元素及其上级的XElement的IEnumerable(T)
-XElementDescendantsAndSelf
-返回此元素及其子代的XElement的IEnumerable(T)
如何获取元素的值,有两种主要方法可以完成此操作
– 一种方法是将XElement 或XAttribute 强制转换为所需的类型。
然后,显式转换运算符将元素或属性的内容转换为指定的类型,
并将其分配给变量。
– 此外,还可以使用XElement.Value 属性或XAttribute.Value 属性
• 但是,对于C#,强制转换通常是更好的方法。在检索可
能存在也可能不存在的元素(或属性)的值时,如果将元
素或属性强制转换为可以为null 的类型,则代码会更易于
编写
• 无法通过强制转换设置元素的内容,而通过
XElement.Value 属性可以做到这一点
Code
1//检索元素集合
2XElement root = new XElement("Root",
new XElement("child1", "1"),
new XElement("child2", "2")
);
Console.WriteLine(root);
IEnumerable<XElement> childElements =
from el in root.Elements()
select el;
foreach (XElement el in childElements)
Console.WriteLine("Name: " + el.Name);
Console.ReadLine();