zoukankan      html  css  js  c++  java
  • 查询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 不能对元素进行排序
  • 相关阅读:
    hdu 2019 数列有序!
    hdu 2023 求平均成绩
    HDU 5805 NanoApe Loves Sequence (思维题) BestCoder Round #86 1002
    51nod 1264 线段相交
    Gym 100801A Alex Origami Squares (求正方形边长)
    HDU 5512 Pagodas (gcd)
    HDU 5510 Bazinga (字符串匹配)
    UVALive 7269 Snake Carpet (构造)
    UVALive 7270 Osu! Master (阅读理解题)
    UVALive 7267 Mysterious Antiques in Sackler Museum (判断长方形)
  • 原文地址:https://www.cnblogs.com/wangcongsuibi/p/8892269.html
Copyright © 2011-2022 走看看