自己也写了那么多,但还有很多不懂,有点浮躁吧,但饭还是要吃啊,说说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()将其转换成文本
  • 使用的几个实例

     var element = new XElement("root", new XElement("child"));
    Console.WriteLine(element);
     <root>
    <child />
    </root>
     var element1 = new XElement("root", new XElement("child", DateTime.Now));
    Console.WriteLine(element1);
     <root>
    <child>2015-01-28T22:35:41.9713268+08:00</child>
    </root>
     var list = new List<User> {
    new User {Name="a",Age= },
    new User {Name="b",Age= },
    new User {Name="c",Age= },
    new User {Name="d",Age= }
    }; var element2 = new XElement("root", list.Select(user => new XElement("child", user.Name)));
    Console.WriteLine(element2);
     var element3 = new XElement("root", list.Select(user => new XElement("child", new XAttribute("name", user.Name), new XAttribute("age", user.Age))));
    Console.WriteLine(element3);
     <root>
    <child>a</child>
    <child>b</child>
    <child>c</child>
    <child>d</child>
    </root> <root>
    <child name="a" age="1" />
    <child name="b" age="2" />
    <child name="c" age="3" />
    <child name="d" age="4" />
    </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,使用的都是相同的方法(对于我们使用者),完美地结合起来。

  请斧正。

24.C#LINQ TO XML(十二章12.3)的更多相关文章

  1. 23.C#Queryable的扩展方法(十二章12.1-12.2)

    今天要写的知识还真心有点绕呢,对于第一节的内容,其实是把原先在内存中的数据源,换成了从数据库中提取出来的数据.从代码的使用方式上是一样的,直接跳过,来看看IEnumerable和IQueryable的 ...

  2. PRML读书会第十二章 Continuous Latent Variables(PCA,Principal Component Analysis,PPCA,核PCA,Autoencoder,非线性流形)

    主讲人 戴玮 (新浪微博: @戴玮_CASIA) Wilbur_中博(1954123) 20:00:49 我今天讲PRML的第十二章,连续隐变量.既然有连续隐变量,一定也有离散隐变量,那么离散隐变量是 ...

  3. 《Android群英传》读书笔记 (5) 第十一章 搭建云端服务器 + 第十二章 Android 5.X新特性详解 + 第十三章 Android实例提高

    第十一章 搭建云端服务器 该章主要介绍了移动后端服务的概念以及Bmob的使用,比较简单,所以略过不总结. 第十三章 Android实例提高 该章主要介绍了拼图游戏和2048的小项目实例,主要是代码,所 ...

  4. perl5 第十二章 Perl5中的引用/指针

    第十二章 Perl5中的引用/指针 by flamephoenix 一.引用简介二.使用引用三.使用反斜线(\)操作符四.引用和数组五.多维数组六.子程序的引用  子程序模板七.数组与子程序八.文件句 ...

  5. 《Django By Example》第十二章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第十二章,全书最后一章,终于到这章 ...

  6. Gradle 1.12用户指南翻译——第五十二章. Maven 插件

    本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上 ...

  7. Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验

    Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...

  8. 《Django By Example》第十二章(终章) 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第十二章,全书最后一章,终于到这章 ...

  9. o'Reill的SVG精髓(第二版)学习笔记——第十二章

    第十二章 SVG动画 12.1动画基础 SVG的动画特性基于万维网联盟的“同步多媒体集成语言”(SMIL)规范(http://www.w3.org/TR/SMIL3). 在这个动画系统中,我们可以指定 ...

随机推荐

  1. Windows Log4日志发送到ElasticSearch

    处理多行数据到elasticsearch Nxlog 配置 <Input in> Module im_file File "E:\\log\\webapi\\\err.log&q ...

  2. I2C 总线协议

    1.I2C协议     2条双向串行线,一条数据线SDA,一条时钟线SCL.   SDA传输数据是大端传输,每次传输8bit,即一字节.   支持多主控(multimastering),任何时间点只能 ...

  3. C++ 第一个C++程序

    #include <iostream> // C++自带的标准头文件都是没有.h的 // 就相当于C语言的<stdio.h> // 提前使用命名空间std using name ...

  4. Hive query issue

    One time, I have written a query with two tables join, One table is big table with partitions , anot ...

  5. Hadoop could not find or load main class

    Error: Could not find or load main class <class_name> 我在尝试使用hadoop definitive guide的代码做练习时,遇到一 ...

  6. Vertica 项目常用代码

    1.查看目录下面有多少文件数 ls -l |grep "^-"|wc -l 思路很明显了,ls后通过grep进行过滤判断是文件还是文件夹, 如果是判断文件夹,可以使用ls -l | ...

  7. Java : 使用jar包里的图片作为窗体的ICON

    文件结构: 源包- -/code/Jframe1.java -/image/1.png 目标: Jframe1.java 使用"/image/1.png"作为左上角的icon 核心 ...

  8. selenium之ExpectedConditions类

    API中对于该类的介绍:Canned ExpectedConditions which are generally useful within webdriver tests.很笼统,大概意思就是在w ...

  9. Codeforces Round #370 (Div. 2)B. Memory and Trident

    地址:http://codeforces.com/problemset/problem/712/B 题目: B. Memory and Trident time limit per test 2 se ...

  10. 常用Eclipse插件在线安装地址

    Srping IDE http://www.springsource.com/update/e3.5   EasyShellhttp://pluginbox.sourceforge.net   M2E ...