XElement 类通过Element 和Attribut提供当前XML元素的子元素和属性集合。通过这两个集合对XML中的元素进行查询。
查询步骤:
1.通过XElement的Load()方法加载XMl文档的具体内容到内存
2.通过Elements(),Element(),Attribute(),Attributes()查询。
Element()返回具有指定名称的子元素。
Elements()返回所有的子元素。
Attribute()返回具有指定名称的属性
Attributes()返回所有的属性
static void UseSelectUserXML() { //查询年龄大于20的 XElement root = XElement.Load("F:\XML\Userxml.XML"); var query = from ele in root.Elements("User") where int.Parse(ele.Attribute("Age").Value) > 20 select new { Name = ele.Attribute("Name").Value,Age = ele.Attribute("Age").Value}; foreach (var item in query) { Console.WriteLine(item); } //查询特定的子元素 var query1 = from ele in root.Elements("User") from ele2 in ele.Elements() where ele2.Name.LocalName == "Sex" select new { Name = ele.Attribute("Name").Value, Sex = ele2.Value }; foreach (var item in query1) { Console.WriteLine(item); } //查询性别为女的用户 var query2 = from ele in root.Elements("User") from ele2 in ele.Elements() where ele2.Name.LocalName == "Sex" where ele2.Value == "FeMale" select new { Name = ele.Attribute("Name").Value, Sex = ele2.Value }; foreach (var item in query2) { Console.WriteLine(item); } //对XML元素进行排序 var query3 = from ele in root.Elements("User") orderby ele.Attribute("Age").Value descending select new { Name = ele.Attribute("Name").Value, Age = ele.Attribute("Age").Value }; foreach (var item in query3) { Console.WriteLine(item); } //基于上下文查询元素 var query4 = from ele in root.Elements("User") where ele.ElementsAfterSelf("User").Count() > 2 select ele; foreach (var item in query4) { Console.WriteLine(item); } }
在这里应该注意的是,查询年龄大于20 ,获取到具体数值的情况下,应使用Attribute(“Age”).Value,获取到特定元素
ele2.Name.LocalName == 特定元素名
排序也要到具体的值,就是value 不能对元素进行排序