日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

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

發布時間:2024/4/17 C# 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 = 0; i < 100000000; 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 = 0; i < 100000000; 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其實它只是一個框架。凡是二進制匯編等能實現的事情,高級語言也是都能實現的。計算機無非就是一個二進制的運算。它可以將數據寫入內存,定然也可以將數據寫入硬盤。畢竟這種事情我們每天都在做。只是忽略了它。所以我要打破自己的思維限制,大膽設想!

轉載于:https://www.cnblogs.com/honghong75042/p/3303093.html

總結

以上是生活随笔為你收集整理的c#以文件流的形式输出xml(可以解决内存溢出)-XmlTextWriter的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。