查询XML树

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 不能对元素进行排序
原文地址:https://www.cnblogs.com/wangcongsuibi/p/8892269.html