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. package.json 的语法解释

    https://www.ijser.cn/npm-package-json-document/ 形式可以有如下多种: version 严格匹配某个版本 >version 必须大于某个版本 > ...

  2. HTML5 的段落首行缩进

    text-indent:0em;表示当前行不需要缩进,文本顶头开始.这个属性可以用在  div  p等元素下面 文本首行的缩进(在首行文字之前插入指定的长度) p { line-height: 2em ...

  3. poj3261 -- Milk Patterns

                                                                        Milk Patterns Time Limit: 5000MS ...

  4. Sql Server 2005的1433端口打开和进行远程连接

    参考地址:http://topic.csdn.net/u/20090828/16/e693935a-99b7-4090-a6bc-0123c91183eb.html 1.如何打开sql server  ...

  5. jQuery插件Jeditable的使用(Struts2处理)

        Jeditable - Edit In Place Plugin For jQuery,是一款JQuery就地编辑插件.也就是在页面直接点击需要编辑的内容,就会自动变成文本框进行编辑.它的官方 ...

  6. OCP-1Z0-051-题目解析-第6题

    6. Examine the structure of the SHIPMENTS table: name                    Null        Type PO_ID      ...

  7. web项目的两个创建形式website和webapplication

    前言 在利用VS2010创建web项目的时候,会有两个选择.可以选择直接创建website网站,还可以选择使用 webapplication应用程序.刚刚接触web开发,看到这两个就疑惑了,既然是都可 ...

  8. [HDU 1317]XYZZY[SPFA变形][最长路]

    题意: 一个图, 点权代表走到该点可获得的能量值. 可正可负. 一个人从1 号出发,带有100点能量. 问是否有一种方案可使人在能量值>0的时候走到n. 思路: 这个题首先要注意点权. 其实就是 ...

  9. drwtsn32.exe 遇到问题须要关闭。我们对此引起的不便表示抱歉

    我的机器老是这样.启动起来就有这个... 那位高手能告诉我这是怎么会事.故障的原因以及解决的办法. 最佳答案 drwtsn32.exe是windows的一项磁盘检查程序,同一时候也是鸡肋程序,最好的办 ...

  10. 高性能WEB开发(6) - web性能測试工具推荐

    WEB性能測试工具主要分为三种.一种是測试页面资源载入速度的,一种是測试页面载入完成后页面呈现.JS操作速度的,另一种是整体上对页面进行评价分析,以下分别对这些工具进行介绍,假设谁有更好的工具也请一起 ...