程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#以文件流的形式輸出xml(可以解決內存溢出)-XmlTextWriter

c#以文件流的形式輸出xml(可以解決內存溢出)-XmlTextWriter

編輯:C#入門知識

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其實它只是一個框架。凡是二進制匯編等能實現的事情,高級語言也是都能實現的。計算機無非就是一個二進制的運算。它可以將數據寫入內存,定然也可以將數據寫入硬盤。畢竟這種事情我們每天都在做。只是忽略了它。所以我要打破自己的思維限制,大膽設想!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved