我有一个1GB的XML文件,想要解析它。如果我使用XML Textreader或XMLDocument,结果非常慢,有时它会挂起......
答案 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