zoukankan      html  css  js  c++  java
  • 24.C#LINQ TO XML(十二章12.3)

      自己也写了那么多,但还有很多不懂,有点浮躁吧,但饭还是要吃啊,说说LINQ TO XML吧。

      LINQ TO XML位于System.Xml.Linq程序集,并且大多数类型位于System.Xml.Linq命名空间。该命名空间下几乎所有类型都以X为前缀;普通DOM API中的Element对应LINQ TO XML中的XElement。列举下都有哪些类型。

    1. XName:表示元素和特性的名称
    2. XNamespace:表示XML的命名空间,通常是一个URL
    3. XObject:是XNode和XAttribute的共同父类:与DOM API中不同,在LINQ TO XML中特性不是节点。如果某方法返回子节点的元素,这里面是不包含特性的
    4. XNode:表示XML树中的节点,它定义了各种用于操作和查询树的成员。
    5. XAttribute:表示包含名/值对的特性,值从本质上讲是文本,但可以显式地转换成其它数据类型
    6. XContainer:是XML树中包含子内容的节点
    7. XText:表示文本节点,其派生类XCData是CDATA文本节点
    8. XElement:它和XAttribute是LINQ TO XML中最常用的类,
    9. XDocument:表示文档
    • 继承于XContainer的Add方法有以下几点:
    1. 空引用会被忽略
    2. XNode和XAttribute实例可以添加
    3. 字符串、数字、日期、时间等使用标准XML格式转换成XText
    4. 其它没有特殊处理的对象将调用ToString()将其转换成文本
    • 使用的几个实例
      1 var element = new XElement("root", new XElement("child"));
      2 Console.WriteLine(element);
      1 <root>
      2   <child />
      3 </root>
      1 var element1 = new XElement("root", new XElement("child", DateTime.Now));
      2 Console.WriteLine(element1);
      1 <root>
      2   <child>2015-01-28T22:35:41.9713268+08:00</child>
      3 </root>
      1 var list = new List<User> {
      2 new User {Name="a",Age=1 },
      3 new User {Name="b",Age=2 },
      4 new User {Name="c",Age=3 },
      5 new User {Name="d",Age=4 }
      6 };
      7 
      8 var element2 = new XElement("root", list.Select(user => new XElement("child", user.Name)));
      9 Console.WriteLine(element2);
      1 var element3 = new XElement("root", list.Select(user => new XElement("child", new XAttribute("name", user.Name), new XAttribute("age", user.Age))));
      2 Console.WriteLine(element3);
       1 <root>
       2   <child>a</child>
       3   <child>b</child>
       4   <child>c</child>
       5   <child>d</child>
       6 </root>
       7 
       8 
       9 <root>
      10   <child name="a" age="1" />
      11   <child name="b" age="2" />
      12   <child name="c" age="3" />
      13   <child name="d" age="4" />
      14 </root>
    • 查询单个节点

      对于XElement来说可迭代的东西太多了,XElement包含很多轴方法(轴方法,个人理解就是直接了当的方法),如什么什么点,比如New Element("root").Elements就是返回在root下所有的子节点,New Element("root").Attributes就是root中所有特性节点。还是罗列下吧,但不止这些。

    1. Ancestors:祖先节点
    2. DescendantNodes:后代节点
    3. Annotations:注释(注释也是一个节点)
    4. Elements:子节点
    5. Descendants:后代
    6. 节点。。。。

      对单个节点使用的轴方法返回的节点序列,完全可以使用LINQ来查询,或者使用扩展方法来做一些操作,可以看到LINQ从查询内存中object到数据库中的数据,再到XML,使用的都是相同的方法(对于我们使用者),完美地结合起来。

      请斧正。

  • 相关阅读:
    Unity 2018 version class.jar path
    GitHub git
    QT install
    Android Studio 安装及汉化
    Unity 调用android
    JAVA 调用c++ 扩展 批评那些垃圾,
    JAVA java调用C++动态链接库dll,有详细过程。VS2015+Eclipse以及失败解决方案
    前端将数据转化为弹幕效果的实现方式
    css圣杯布局的实现方式
    浏览器缓存问题原理以及解决方案
  • 原文地址:https://www.cnblogs.com/a2htray/p/4257356.html
Copyright © 2011-2022 走看看