1、XmlTextWriter 表示提供快速、非缓存、只进方法的编写器,该方法生成包含 XML 数据(这些数据符合 W3C 可扩展标记语言 (XML) 1.0 和“XML 中的命名空间”建议)的流或文件。

public class XmlTextWriter : XmlWriter XmlTextWriter继承抽象类 XmlWriter

XmlTextWriter 小例子:

  string resultFileName = "c:/44.txt";
if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(resultFileName)))
{
System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(resultFileName));
} XmlTextWriter result = new XmlTextWriter(resultFileName, null);
result.Formatting = Formatting.Indented;
result.WriteStartElement("PolicyList");
result.WriteStartElement("Policy");
result.WriteAttributeString("username", "USERNAME"+i.ToString());
result.WriteEndElement();
result.WriteEndElement();
result.Close();

XmlTextWriter 之所以不产生内存溢出是因为它是以流的形式将数据写入硬盘中的。

2、 我做了一个XmlTextWriter 与普通拼接字符的形式对比:

XmlTextWriter

  string resultFileName = "c:/44.txt";
if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(resultFileName)))
{
System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(resultFileName));
} XmlTextWriter result = new XmlTextWriter(resultFileName, null);
result.Formatting = Formatting.Indented;
result.WriteStartElement("PolicyList");
for (int i = ; i < ; i++)
{
result.WriteStartElement("Policy");
result.WriteAttributeString("username", "USERNAME"+i.ToString());
result.WriteEndElement();
}
result.WriteEndElement();
result.Close();

普通:

  XmlDocument xmlD = new XmlDocument();
StringBuilder sb = new StringBuilder();
for (int i = ; i < ; i++)
{
sb.Append("<PolicyList username='USERNAME"+i.ToString()+"' />");
}
xmlD.LoadXml(sb.ToString());
StreamWriter sw = new StreamWriter("c:/55.txt");
sw.Write("www");
sw.Close();

第一个正常显示,第二个则出现内存溢出提示。所以在大数据量的时候。一定要写成流的形式,这样可以防止内存溢出。

3、由这件事情让我想到好多

以前我们用.net写输出时,没想过要将数据写到硬盘。如果出现内存溢出就无计可施。其实我当时真的没想过要讲数据写入硬盘吗?错了,我想到过。但是我马上否定了我自己,总感觉这是不可能实现的事情。这就是思维限制。我的思维已经受限。后来我想.net其实它只是一个框架。凡是二进制汇编等能实现的事情,高级语言也是都能实现的。计算机无非就是一个二进制的运算。它可以将数据写入内存,定然也可以将数据写入硬盘。毕竟这种事情我们每天都在做。只是忽略了它。所以我要打破自己的思维限制,大胆设想!

c#以文件流的形式输出xml(可以解决内存溢出)-XmlTextWriter的更多相关文章

  1. 拼接xml时出现内存溢出解决办法

    /// designed by Alex /// 解决内存溢出问题,不可使用迭代器和foreach /// 循环遍历List, 别生成xml,一边释放 /// 反向遍历,相当于出栈,避免索引顺序乱的问 ...

  2. Ajax异步请求返回文件流(eg:导出文件时,直接将导出数据用文件流的形式返回客户端供客户下载)

    在异步请求中要返回文件流,不能使用JQuery,因为$.ajax,$.post 不支持返回二进制文件流的类型,可以看到下图,dataType只支持xml,json,script,html这几种格式,没 ...

  3. 将字符串以用二进制流的形式读入XML文件

    其实将字符串写入XML文件本身并不复杂,这里只是写一些需要注意的地方,特别是编码格式,这里需要的是XML默认的编码方式是UTF-8,在对字符串进行编码的时候一定要注意, string strRecei ...

  4. java以流的形式输出文件

    原文:http://blog.csdn.net/liutt55/article/details/78126614 public void downProcessFile(HttpServletRequ ...

  5. vue项目,axios请求图片接口,接口返回的是文件流的形式,如何转换成图片?

    axios .get('/captcha', { params: param, responseType: 'arraybuffer' }) .then(response => { return ...

  6. VS生成项目时,有些文件无法复制到输出目录的解决办法

    有时候,我们在生成项目时,发现有些文件如:.jpg的图片文件,无法复制到输出目录中,此时会非常纠结,反复的清理项目,重新生成,依旧不能解决此问题.后来我打开.csproj的项目工程文件时,经过对比发现 ...

  7. 基于VUE利用pdf.js实现文件流形式的pdf显示

    首先推荐大家看一下这个demo vue-pdf.js-demo,这里面包含固定本地地址,远程pdf地址,通过打开文件的方式打开pdf 这儿我们着重介绍一下通过文件流的形式打开pdf.(所谓文件流,就是 ...

  8. php将文件转换成二进制输出[转]

    header( "Content-type: image/jpeg"); $PSize = filesize('1.jpg'); $picturedata = fread(fope ...

  9. Java中常用IO流之文件流的基本使用姿势

    所谓的 IO 即 Input(输入)/Output(输出) ,当软件与外部资源(例如:网络,数据库,磁盘文件)交互的时候,就会用到 IO 操作.而在IO操作中,最常用的一种方式就是流,也被称为IO流. ...

随机推荐

  1. IE查看控件时常

    一.按一下F12 二.找到探查器 三.点击开始配置文件 四.当前视图:改成调用树的形式 然后工具事件去查询 如图:

  2. MyEclipse安装Eclipse Memory Analyzer插件,并进行错误文件分析流程

    在看深入JVM虚拟机一书(p50,2.4 实战OutOfMemoryError),有一个Java堆溢出的例子,使用到了Eclipse Memory Analyzer插件,由于自己现在使用的是MyEcl ...

  3. Office2007设置无格式粘贴

    打开Word 2007,按Alt+F11.这时会出现一个Visual Basic编辑窗口.如图所示:   上图中左上方,鼠标右击Normal→插入→模块,出现下图:     双击"模块1&q ...

  4. 开心系列学习笔记---------javascript(7)

    一.函数        1)函数类型            函数声明(缩写为FD)是这样一种函数:            1.有一个特定的名称            2.在源码中的位置:要么处于程序级 ...

  5. 利用sql命令把结果集输出到文件

    利用sql命令把结果集输出到文件 红色部分的三条命令完成把结果集输出到文件!! [root@test root]# psql -hlocalhost -Utest testWelcome to psq ...

  6. 那两年炼就的Android内功修养

    http://blog.csdn.net/luoshengyang/article/details/8923485 http://iconsparadise.com/ http://blog.csdn ...

  7. Unix,windows和Mac中的换行

    Unix 系统里,每行结尾只有“<换行>”,即“\n”:Windows系统里面,每行结尾是“<换行><回车 >”,即“\r\n”:Mac系统里,每行结尾是“< ...

  8. 烟雾检测笔记1--《Video-based smoke detection with histogram sequence of LBP and LBPV pyramids》解析、实现

    基于HEP(histograms of equivalent patterns[1])框架下的特征具有良好的纹理分类效果,LBP(local binary patterns[2])属于HEP框架下最常 ...

  9. IDX爱定客 | 氪加

    IDX爱定客 | 氪加 个性化定制鞋网站,在线定制只需三分钟

  10. 文本去重之SimHash算法

    文本去重之SimHash算法 - pathenon的个人页面 - 开源中国社区 文本去重之SimHash算法