我有我的程序,实际上加载了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