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。列举下都有哪些类型。
- XName:表示元素和特性的名称
- XNamespace:表示XML的命名空间,通常是一个URL
- XObject:是XNode和XAttribute的共同父类:与DOM API中不同,在LINQ TO XML中特性不是节点。如果某方法返回子节点的元素,这里面是不包含特性的
- XNode:表示XML树中的节点,它定义了各种用于操作和查询树的成员。
- XAttribute:表示包含名/值对的特性,值从本质上讲是文本,但可以显式地转换成其它数据类型
- XContainer:是XML树中包含子内容的节点
- XText:表示文本节点,其派生类XCData是CDATA文本节点
- XElement:它和XAttribute是LINQ TO XML中最常用的类,
- XDocument:表示文档
- 继承于XContainer的Add方法有以下几点:
- 空引用会被忽略
- XNode和XAttribute实例可以添加
- 字符串、数字、日期、时间等使用标准XML格式转换成XText
- 其它没有特殊处理的对象将调用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中所有特性节点。还是罗列下吧,但不止这些。
- Ancestors:祖先节点
- DescendantNodes:后代节点
- Annotations:注释(注释也是一个节点)
- Elements:子节点
- Descendants:后代
- 节点。。。。
对单个节点使用的轴方法返回的节点序列,完全可以使用LINQ来查询,或者使用扩展方法来做一些操作,可以看到LINQ从查询内存中object到数据库中的数据,再到XML,使用的都是相同的方法(对于我们使用者),完美地结合起来。
请斧正。
24.C#LINQ TO XML(十二章12.3)的更多相关文章
- 23.C#Queryable的扩展方法(十二章12.1-12.2)
今天要写的知识还真心有点绕呢,对于第一节的内容,其实是把原先在内存中的数据源,换成了从数据库中提取出来的数据.从代码的使用方式上是一样的,直接跳过,来看看IEnumerable和IQueryable的 ...
- PRML读书会第十二章 Continuous Latent Variables(PCA,Principal Component Analysis,PPCA,核PCA,Autoencoder,非线性流形)
主讲人 戴玮 (新浪微博: @戴玮_CASIA) Wilbur_中博(1954123) 20:00:49 我今天讲PRML的第十二章,连续隐变量.既然有连续隐变量,一定也有离散隐变量,那么离散隐变量是 ...
- 《Android群英传》读书笔记 (5) 第十一章 搭建云端服务器 + 第十二章 Android 5.X新特性详解 + 第十三章 Android实例提高
第十一章 搭建云端服务器 该章主要介绍了移动后端服务的概念以及Bmob的使用,比较简单,所以略过不总结. 第十三章 Android实例提高 该章主要介绍了拼图游戏和2048的小项目实例,主要是代码,所 ...
- perl5 第十二章 Perl5中的引用/指针
第十二章 Perl5中的引用/指针 by flamephoenix 一.引用简介二.使用引用三.使用反斜线(\)操作符四.引用和数组五.多维数组六.子程序的引用 子程序模板七.数组与子程序八.文件句 ...
- 《Django By Example》第十二章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第十二章,全书最后一章,终于到这章 ...
- Gradle 1.12用户指南翻译——第五十二章. Maven 插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上 ...
- Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验
Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...
- 《Django By Example》第十二章(终章) 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第十二章,全书最后一章,终于到这章 ...
- o'Reill的SVG精髓(第二版)学习笔记——第十二章
第十二章 SVG动画 12.1动画基础 SVG的动画特性基于万维网联盟的“同步多媒体集成语言”(SMIL)规范(http://www.w3.org/TR/SMIL3). 在这个动画系统中,我们可以指定 ...
随机推荐
- Windows Log4日志发送到ElasticSearch
处理多行数据到elasticsearch Nxlog 配置 <Input in> Module im_file File "E:\\log\\webapi\\\err.log&q ...
- I2C 总线协议
1.I2C协议 2条双向串行线,一条数据线SDA,一条时钟线SCL. SDA传输数据是大端传输,每次传输8bit,即一字节. 支持多主控(multimastering),任何时间点只能 ...
- C++ 第一个C++程序
#include <iostream> // C++自带的标准头文件都是没有.h的 // 就相当于C语言的<stdio.h> // 提前使用命名空间std using name ...
- Hive query issue
One time, I have written a query with two tables join, One table is big table with partitions , anot ...
- Hadoop could not find or load main class
Error: Could not find or load main class <class_name> 我在尝试使用hadoop definitive guide的代码做练习时,遇到一 ...
- Vertica 项目常用代码
1.查看目录下面有多少文件数 ls -l |grep "^-"|wc -l 思路很明显了,ls后通过grep进行过滤判断是文件还是文件夹, 如果是判断文件夹,可以使用ls -l | ...
- Java : 使用jar包里的图片作为窗体的ICON
文件结构: 源包- -/code/Jframe1.java -/image/1.png 目标: Jframe1.java 使用"/image/1.png"作为左上角的icon 核心 ...
- selenium之ExpectedConditions类
API中对于该类的介绍:Canned ExpectedConditions which are generally useful within webdriver tests.很笼统,大概意思就是在w ...
- 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 ...
- 常用Eclipse插件在线安装地址
Srping IDE http://www.springsource.com/update/e3.5 EasyShellhttp://pluginbox.sourceforge.net M2E ...