Linq To XML:论XStreamingElement与XElement的不同
来源:互联网 发布:淘宝商城男鞋休闲 编辑:程序博客网 时间:2024/06/01 08:09
XStreamingElement 从名字上面,已经能看出它是使用流的模式来创建Element
看到它的MSDN在线文档(http://msdn.microsoft.com/zh-cn/library/system.xml.linq.xstreamingelement(v=vs.95).aspx#Y200)
是这么解释的
XElement 在操作结点时,是把变量加到结点上,而XStreamingElement则是把变量内存地址加到结点上
变量自身的内存占用和变量地址的内存占用显然有比较大的差距,而这也直接影响着性能,这些步骤在循环中发生,结点的个数也
直接拉开内存占用大小的距离。所以XStreamingElement比较适合创建比较大的XML文件
另一个特征就是XStreaming的延迟查询能力,序列化发生的次数只有一次,也就是最后循环执行完毕以后才发生!
下面以一个例子来说明他们之间的区别
以下例子来自英文版电子书
Pro LINQ: Language Integrated Query in C# 2010
第246页
XElement
- string[] names = { "John", "Paul","George", "Pete" };
- XElement xNames = new XElement("Beatles",
- from n in names
- select new XElement("Name", n));
- names[3] = "Ringo";
- Console.WriteLine(xNames);
输出
- <Beatles>
- <Name>John</Name>
- <Name>Paul</Name>
- <Name>George</Name>
- <Name>Pete</Name>
- </Beatles>
结果看到,第三个元素并没有变成"Ringo",因为它在循环时就在创建XML树了,故之后无论怎么修改那个数组
都跟该XML树无关
XStreamingElement
- string[] names = { "John", "Paul","George", "Pete" };
- XStreamingElement xNames =
- new XStreamingElement("Beatles",
- from n in names
- select new XStreamingElement("Name", n));
- names[3] = "Ringo";
- Console.WriteLine(xNames);
输出
- <Beatles>
- <Name>John</Name>
- <Name>Paul</Name>
- <Name>George</Name>
- <Name>Ringo</Name>
- </Beatles>
从结果已经可以看出XStreamingElement是怎么工作的了,在Console.WriteLine(xNames);这一行
XML树才真正被创建,故在这一行代码执行之前,对数组的任何改变都是有效的
0 0
- Linq To XML:论XStreamingElement与XElement的不同
- Linq To XML:论XStreamingElement与XElement的不同
- Linq to XML 之XElement的Descendants方法的新发现
- Linq To Xml 备忘录1(XDocument, XElement的使用)
- Linq to Xml:将XML字符串转化成 XElement 类型
- LINQ To XML:设置子元素的值、添加子元素或移除子元素(XElement.SetElementValue)
- C# Linq to xml学习 用XElement类读写XML文档(用作配置文档)
- Linq技术二:Linq to XML及xml增删改查的不同实现方式
- XElement与XmlElement相互转换的代码
- 使用Dom与Linq to Xml
- LINQ to XML 的简单应用
- linq to xml查找元素的值
- LINQ To XML的一些方法
- LINQ to XML的增、删、改
- 使用LINQ to XML
- LINQ TO XML
- LINQ TO XML学习
- linq to xml demo
- Javascript 日期格式化
- Java Code Review Checklist
- 编译报错:Choose a destination with a supported architecture in order to run on this device
- ddraw 视频下画图 不闪烁的方法
- 重载,重写,封装,继承,多态 等。
- Linq To XML:论XStreamingElement与XElement的不同
- 不自信的人,总是憧憬别人
- 我的第一篇博文:CSDN编程挑战回文数
- 网页宽度自动适应手机屏幕宽度的方法
- 课程设计
- 常见编码格式
- HDU 1269 迷宫城堡 最大强连通图题解
- 【Nginx】如何处理HTTP配置
- 李一男离开华为时给属下的忠告!