c#以文件流的形式输出xml(可以解决内存溢出)-XmlTextWriter
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的更多相关文章
- 拼接xml时出现内存溢出解决办法
/// designed by Alex /// 解决内存溢出问题,不可使用迭代器和foreach /// 循环遍历List, 别生成xml,一边释放 /// 反向遍历,相当于出栈,避免索引顺序乱的问 ...
- Ajax异步请求返回文件流(eg:导出文件时,直接将导出数据用文件流的形式返回客户端供客户下载)
在异步请求中要返回文件流,不能使用JQuery,因为$.ajax,$.post 不支持返回二进制文件流的类型,可以看到下图,dataType只支持xml,json,script,html这几种格式,没 ...
- 将字符串以用二进制流的形式读入XML文件
其实将字符串写入XML文件本身并不复杂,这里只是写一些需要注意的地方,特别是编码格式,这里需要的是XML默认的编码方式是UTF-8,在对字符串进行编码的时候一定要注意, string strRecei ...
- java以流的形式输出文件
原文:http://blog.csdn.net/liutt55/article/details/78126614 public void downProcessFile(HttpServletRequ ...
- vue项目,axios请求图片接口,接口返回的是文件流的形式,如何转换成图片?
axios .get('/captcha', { params: param, responseType: 'arraybuffer' }) .then(response => { return ...
- VS生成项目时,有些文件无法复制到输出目录的解决办法
有时候,我们在生成项目时,发现有些文件如:.jpg的图片文件,无法复制到输出目录中,此时会非常纠结,反复的清理项目,重新生成,依旧不能解决此问题.后来我打开.csproj的项目工程文件时,经过对比发现 ...
- 基于VUE利用pdf.js实现文件流形式的pdf显示
首先推荐大家看一下这个demo vue-pdf.js-demo,这里面包含固定本地地址,远程pdf地址,通过打开文件的方式打开pdf 这儿我们着重介绍一下通过文件流的形式打开pdf.(所谓文件流,就是 ...
- php将文件转换成二进制输出[转]
header( "Content-type: image/jpeg"); $PSize = filesize('1.jpg'); $picturedata = fread(fope ...
- Java中常用IO流之文件流的基本使用姿势
所谓的 IO 即 Input(输入)/Output(输出) ,当软件与外部资源(例如:网络,数据库,磁盘文件)交互的时候,就会用到 IO 操作.而在IO操作中,最常用的一种方式就是流,也被称为IO流. ...
随机推荐
- NOD32强制卸载工具使用方法【转】
装了ESET NOD32又忘记密码了,无法卸载,怎么办? 以下转自官网:http://faq.eset.com.cn/index.php?pid=254 [适用产品:ESET NOD32 防病毒软件4 ...
- 如何删除textarea的移动版Safari的阴影?
如何删除textarea的移动版Safari的阴影? 在iphone的Safari上运行网页,textarea无法使用box-shadow样式,而且顶部有内阴影,如何清除? 添加评论 分享 赞同1 ...
- 读论文系列:Nearest Keyword Search in XML Documents中使用的数据结构(CT、ECT)
Reference: [1]Y. Tao, S. Papadopoulos, C. Sheng, K. Stefanidis. Nearest Keyword Search in XML Docume ...
- bzoj1752 [Usaco2005 qua]Til the Cows Come Home
Description Bessie is out in the field and wants to get back to the barn to get as much sleep as pos ...
- jumpGate部署
preface statement: manageing OpenStack & SoftLayer resource with Jumpgate 1,forward; Imagine a w ...
- 分割视图控制器(UISplitViewController) 改_masterColumnWidth 导致在 IOS 10中出现闪退
默认UISplitViewController的Master和Detail的宽度是固定的,可以通过下面的方式来改变 [splitViewController setValue:[NSNumber nu ...
- H Language Blueprint
H Language Blueprint I will design the H language in the very-soon future, it will be like: 1- a scr ...
- [Hapi.js] Serving static files
hapi does not support serving static files out of the box. Instead it relies on a module called Iner ...
- StaggeredGridView+universal-image-loader载入网路图片实现瀑布流
StaggeredGridView 开源lib https://github.com/maurycyw/StaggeredGridView 文章demo下载地址 http://download.c ...
- hdoj 1863 畅通工程 最小生成树---prime算法
题目: http://acm.hdu.edu.cn/showproblem.php?pid=1863 注意有可能出现无法生成树的情况. #include <iostream> #inclu ...