我有我的程序,實際上加載了500MB和以上的文件的代碼。如何解決System.OutOfMemoryException當使用C#Windows應用程序加載大型XML文件
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(reader);
reader.Close();
我得到這種錯誤,不知道如何解決問題。
請給我一些建議。
謝謝!
我有我的程序,實際上加載了500MB和以上的文件的代碼。如何解決System.OutOfMemoryException當使用C#Windows應用程序加載大型XML文件
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(reader);
reader.Close();
我得到這種錯誤,不知道如何解決問題。
請給我一些建議。
謝謝!
哦..我可能無法使用,雖然.. – mingzckydowzky 2011-04-05 02:00:13
我會用一個XmlReader
解析文檔,提供只向前的數據訪問和內存中清除很好本身了 - 當然,也可以是不XmlDocument
的便利性要複雜得多類。
這個簡單的示例將從開始逐行讀取文件開始,爲每行提供一個XmlReader。
using (var rdr = XmlReader.Create(new StreamReader("File.xml")))
{
while (rdr.Read())
{
//do what you will with the line
}
}
使用的XmlReader當XmlReader Properties (MSDN)
你能告訴我如何? – mingzckydowzky 2011-04-05 01:58:43
除了上面的代碼我有以下內容:XmlTextReader myTextReader = new XmlTextReader(txtFileName.Text); myTextReader.WhitespaceHandling = WhitespaceHandling.None; while(myTextReader.Read()){foreach(XmlNode node in xmlDoc){TreeNode treeNode = XmlNode2TreeNode(myTextReader,myTextReader.p); treeNode.Text = FormatName(node); treeView1.Nodes.Add(treeNode節點); }} – mingzckydowzky 2011-04-05 02:02:38
添加了基本樣本來回答,明茨基。 – topspin 2011-04-05 02:48:48
您可能需要切換到一個基於流的XML解析器見的方法和屬性提供給您。 – 2011-04-05 01:33:44
和/或切換到實際加載較小的XML文件。 – MusiGenesis 2011-04-05 01:36:38
@Matt你能告訴我一些關於如何做的代碼嗎? – mingzckydowzky 2011-04-05 02:01:35