【发布时间】:2010-10-02 21:47:23
【问题描述】:
我有一个 1GB 的 XML 文件并且想要解析它。如果我使用 XML Textreader 或 XMLDocument,结果会很慢,有时会挂起...
【问题讨论】:
-
那个无耻插入的网址有什么用?
-
什么都没有,尤其是现在它已经消失了。
我有一个 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
【讨论】: