24.C#LINQ TO XML(十二章12.3)
2015-01-28 22:46
309 查看
自己也写了那么多,但还有很多不懂,有点浮躁吧,但饭还是要吃啊,说说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()将其转换成文本
使用的几个实例
查询单个节点
对于XElement来说可迭代的东西太多了,XElement包含很多轴方法(轴方法,个人理解就是直接了当的方法),如什么什么点,比如New Element("root").Elements就是返回在root下所有的子节点,New Element("root").Attributes就是root中所有特性节点。还是罗列下吧,但不止这些。
Ancestors:祖先节点
DescendantNodes:后代节点
Annotations:注释(注释也是一个节点)
Elements:子节点
Descendants:后代
节点。。。。
对单个节点使用的轴方法返回的节点序列,完全可以使用LINQ来查询,或者使用扩展方法来做一些操作,可以看到LINQ从查询内存中object到数据库中的数据,再到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=1 }, new User {Name="b",Age=2 }, new User {Name="c",Age=3 }, new User {Name="d",Age=4 } }; 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,使用的都是相同的方法(对于我们使用者),完美地结合起来。
请斧正。
相关文章推荐
- 步步为营VS 2008 + .NET 3.5(14) - XLINQ(LINQ to XML)之针对XML文件的添加、查询、更新和删除
- LINQ to XML
- 使用linq to xml 快速创建自己的Rss -- 转载自 半途 blog
- 使用linq to xml 快速创建自己的Rss 之二 Syndication篇
- 使用linq to xml 快速创建自己的Rss
- Linq To XML 学习
- 用Linq to XML的方式查询XML 文档
- 使用Linq to Xml 读取配置文件
- 使用Linq to Xml 读取配置文件
- 在silverlight中使用Linq TO XML
- Linq To Xml上手(1) Descendants、Elements遍历节点
- 步步为营VS 2008 + .NET 3.5(14) - XLINQ(LINQ to XML)之针对XML文件的添加、查询、更新和删除
- LINQ TO XML
- 使用linq to xml 快速创建自己的Rss
- Linq To Xml改变App.config中的ConnectionString的Value
- 步步为营VS 2008 + .NET 3.5(14) - XLINQ(LINQ to XML)之针对XML文件的添加、查询、更新和删除
- LINQ TO XML
- linq to sql取出随机记录/多表查询/将查询出的结果生成xml
- [导入]使用linq to xml 快速创建自己的Rss
- 在silverlight中使用Linq TO XML