之前我已经完成了XML解析,但从未进行过大规模的解析。 如果我正在处理许多类似于这种格式的文件:
<?xml version="1.0" ?>
<items comment="something...">
<uid>6523453</uid>
<uid>94593453</uid>
</items>
解析这些文档的最快方法是什么?
1)XML DOM
2)XML Serialize - 重新水化为.NET对象
3)其他一些方法
更新
我忘了提到平均会有大约8000个uid元素。
答案 0 :(得分:3)
使用XmlReader
肯定是最快的方法,但是当然你必须手动完成所有的解析。它直接从流中读取而不缓存任何东西,但与DOM相比,它使用起来不太方便。
比较你建议的两个:序列化应该比使用DOM更快,因为(我相信)它不会将整个树缓存在内存中 - 如果你专门瞄准它也肯定有一个更容易使用的界面执行序列化。
答案 1 :(得分:2)
我想说Xml序列化将是两全其美的。您可以轻松使用,速度也很快。 xml序列化还有一些额外的开销......但是如果你手动使用XmlReader,那么当你使用那个阅读器重新创建对象图时,你至少会复制(如果不是超过)这些开销。
答案 2 :(得分:1)
根据您需要对数据执行的操作,@ Noldorin提到的XmlReader是流式处理的最佳选择。如果您需要使用XPath进行更多ad-hoc样式访问数据,XPathDocument将比原始XML文档快得多。