用C#解析大型XML(大小为1GB)的最佳方法是什么?

用C#解析大型XML(大小为1GB)的最佳方法是什么?,c#,xml,parsing,.net-2.0,C#,Xml,Parsing,.net 2.0,我有一个1GB的XML文件,想解析它。如果我使用XMLTextReader或XMLDocument,结果非常慢,有时会挂起…您必须使用xmlreader实现自定义逻辑。xmlreader在使用之前不会将完整的XML加载到内存中,这意味着您可以从流中读取它并对其进行处理。XMLTextreader不应该挂起,因为它是基于流的,只处理数据块 如果挂起,则很可能是加载文件时出错。XmlDocument在这种情况下不可行,因为它会试图将该千兆字节的数据吸入主内存。我很惊讶您发现XmlTextReader

我有一个1GB的XML文件,想解析它。如果我使用XMLTextReader或XMLDocument,结果非常慢,有时会挂起…

您必须使用xmlreader实现自定义逻辑。xmlreader在使用之前不会将完整的XML加载到内存中,这意味着您可以从流中读取它并对其进行处理。

XMLTextreader不应该挂起,因为它是基于流的,只处理数据块


如果挂起,则很可能是加载文件时出错。

XmlDocument在这种情况下不可行,因为它会试图将该千兆字节的数据吸入主内存。我很惊讶您发现XmlTextReader太慢了。你有没有试过下面的方法

using (XmlTextReader rdr = new XmlTextReader("MyBigFile.txt"))
{
     // use rdr to advance through the document.
}

我对这个主题不是很熟悉,但是对于您的特定问题,XmlReader类应该可以很好地工作。毕竟,它们正是为此而优化的。

我只想用我发现的性能比较来支持所有推广XmlReader的人:


那个不知羞耻地插入的url有什么好处?什么都没有,尤其是现在它已经不存在了。它可能由于操作系统或文件系统级别的资源限制而挂起。