2011-04-05 25 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

相关问题