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

时间:2009-01-22 12:38:35

标签: c# xml parsing .net-2.0

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

5 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:8)

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

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

答案 2 :(得分:6)

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

如果它挂起,则可能是您在加载文件时出错了。

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

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