2011-04-05 16 views
1

我有我的程序,實際上加載了500MB和以上的文件的代碼。如何解決System.OutOfMemoryException當使用C#Windows應用程序加載大型XML文件

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load(reader); 
reader.Close(); 

我得到這種錯誤,不知道如何解決問題。
請給我一些建議。

謝謝!

+2

您可能需要切換到一個基於流的XML解析器見的方法和屬性提供給您。 – 2011-04-05 01:33:44

+1

和/或切換到實際加載較小的XML文件。 – MusiGenesis 2011-04-05 01:36:38

+0

@Matt你能告訴我一些關於如何做的代碼嗎? – mingzckydowzky 2011-04-05 02:01:35

回答

3

我會用一個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)

+0

你能告訴我如何? – mingzckydowzky 2011-04-05 01:58:43

+0

除了上面的代碼我有以下內容: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

+0

添加了基本樣本來回答,明茨基。 – topspin 2011-04-05 02:48:48

相關問題