.NET中的速度和XML解析 - 序列化与XML DOM对比?

时间:2009-05-27 23:50:16

标签: .net xml dom parsing xml-parsing

之前我已经完成了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元素。

3 个答案:

答案 0 :(得分:3)

使用XmlReader肯定是最快的方法,但是当然你必须手动完成所有的解析。它直接从流中读取而不缓存任何东西,但与DOM相比,它使用起来不太方便。

比较你建议的两个:序列化应该比使用DOM更快,因为(我相信)它不会将整个树缓存在内存中 - 如果你专门瞄准它也肯定有一个更容易使用的界面执行序列化。

答案 1 :(得分:2)

我想说Xml序列化将是两全其美的。您可以轻松使用,速度也很快。 xml序列化还有一些额外的开销......但是如果你手动使用XmlReader,那么当你使用那个阅读器重新创建对象图时,你至少会复制(如果不是超过)这些开销。

答案 2 :(得分:1)

根据您需要对数据执行的操作,@ Noldorin提到的XmlReader是流式处理的最佳选择。如果您需要使用XPath进行更多ad-hoc样式访问数据,XPathDocument将比原始XML文档快得多。

http://msdn.microsoft.com/en-us/library/eh3exdc4.aspx