zoukankan      html  css  js  c++  java
  • XML基础学习02<linq to xml>

    Linq to XML的理解

    1:这是一种比较好的操作Xml的工具。

    àXDocument 文档

    àXElement 元素

    àXAttribute 属性

    àXText 文本

    2:这里还是和我们之前创建xml的形式是一样的,只是这里更为的简单点。

    创建xmldocument节点,创建根元素,创建person元素,将person元素添加到根元素下面,在创建id属性这里是键值对形式,创建name,sex元素。并因为他们是对象,可以使用name.Value="阿辉";,通过add方法统一的保存到person元素。

    1. public static void Main(string[] args)
    2. {
    3.     var doc = new XDocument();
    4.     //创建根元素
    5.     var root = new XElement("root");
    6.     doc.Add(root);
    7.     var person = new XElement("person");
    8.     XAttribute xId=new XAttribute("id","003");
    9.     XElement name=new XElement("name");
    10.     var sex = new XElement("dex");
    11.     name.Value = "阿辉";
    12.     sex.Value = "23";
    13.     person.Add(xId,name,sex);
    14.     root.Add(person);
    15.     doc.Save("ahuiLinq.xml");
    16. }

    3:再来一个简单的XML文档的形式。

    直接就好像在写LINQ一样,直接就写完了。

    1. static void Main(string[] args)
    2. {
    3.     new XDocument(
    4.         new XElement("root",
    5.             new XElement("person",
    6.                 new XAttribute("id","002"),
    7.                 new XElement("name","ahji"),
    8.                 new XElement("age","23"),
    9.                 new XElement("sex","")
    10.                    ))).Save("ahui02_XML.xml");
    11. }

    其实这里面的原理和之前我们写的那种形式的是一样的。我们只需要按照之前的顺序写下去就行了。

    4:我们可以来好好的感觉下XML的强大之处。

    _——》使用xml将数据库中的数据进行临时的保存

    1. var xdoc=new XDocument(new XElement("PersonCollection"));
    2.  Random random=new Random();
    3.  //我们可以从文本文件和DB中取到数据,保存到xml文件中。
    4.  for (int i = 0; i <100; i++)
    5.  {
    6.      xdoc.Root.Add(
    7.          new XElement("Person",
    8.              new XAttribute("id",i+1),
    9.              new XElement("name","阿辉"+i),
    10.              new XElement("age",random.Next(41)),
    11.              new XElement("sex","男女"[random.Next(2)]))
    12.          );
    13.  }
    14.  xdoc.Save("Db中读取的数据.xml");

    这里有一个小的知识点,我们发现在最后面那个有个男女的字符,但是后面直接跟了个[]这个是利用随机数是0,1来决定前面字符串中的位置,显示的是男或女。感觉很高端的样子。

    1. new XElement("sex","男女"[random.Next(2)]))

    5:直接将字符串转换为xml文档,那么就是在字符串中直接写代码就行了。

    1.             XDocument.Parse(@"
    2. <root>
    3.     <person id=""004"">
    4.         <name>阿辉</name>
    5.         <age>23</age>
    6.         <sex>男</sex>
    7.    </person>
    8. </root>
    9.                                    ").Save("stringToXml.xml");

    这样的做法就比较之前的更加的简单了。

    6:当xml文档的内容特别多,且我们需要某个文件的时候就需要使用我们查找的功能,

    这里有具体的步骤。

    *:加载xml文件

    *:查找

    *:具体的查找公式,这里的e是节点对象,也是属性,标签,这里主要进行判断。

    //var query=xdoc.DescendantNodes().where(e=>{返回bool值得判断条件,其实这里就是写逻辑判断})+xdoc.DescendantNodes()返回全部的节点集合

    1. string path = "Db中读取的数据.xml";
    2. XDocument xdoc = XDocument.Load(path);
    3. var query = xdoc.
    4.     DescendantNodes().
    5.     Where(e =>
    6.     {
    7.         //返回Bool值得判断条件,e是节点对象,有属性,标签,
    8.         XElement els = e as XElement;
    9.         if (els == null) return false;
    10.         XElement age = els.Element("age");
    11.         XElement sex = els.Element("");
    12.         if(age !=null && sex !=null)
    13.         {
    14.             int numAge = Convert.ToInt32(age.Value);
    15.             if (numAge >= 20 && numAge <= 25)
    16.             {
    17.                 return true;
    18.             }
    19.             else
    20.             {
    21.                 return false;
    22.             }
    23.         }
    24.         else
    25.         {
    26.             return false;
    27.         }
    28.     });
    29. XElement root=new XElement("root");
    30. //这里遍历得到的数据就是XElement数据。
    31. foreach (XElement item in query)
    32. {
    33.     root.Add(item);
    34. }
    35. new XDocument(root).Save("Search.xml");
  • 相关阅读:
    linux一切皆文件之tcp socket描述符(三)
    linux一切皆文件之Unix domain socket描述符(二)
    linux一切皆文件之文件描述符(一)
    k8s之使用secret获取私有仓库镜像
    https、ssl、tls协议学习
    k8s网络之calico学习
    泛型的原理、应用、约束、缓存
    C#中Unity对象的注册方式与生命周期解析
    监听EF执行的sql语句及状态
    递归一个List<T>,可自己根据需要改造为通用型。
  • 原文地址:https://www.cnblogs.com/netxiaohui/p/5131726.html
Copyright © 2011-2022 走看看