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

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

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

在这种情况下,XmlDocument是不可行的,因为它会尝试将该千兆字节吸入主内存。 我很惊讶你发现XmlTextReader太慢了。 你尝试过类似下面的东西吗?

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

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

如果它挂起,很可能是你在加载文件时做错了。

我对这个主题不太熟悉,但是对于你的具体问题,XmlReader类应该可以正常工作。 毕竟,它们正是为此而优化的。

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

http://www.nearinfinity.com/blogs/joe_ferner/performance_linq_to_sql_vs.html