4

我以前做过 XML 解析,但从未大规模进行过。如果我正在处理许多类似于这种格式的文档:

<?xml version="1.0" ?>
<items comment="something...">
  <uid>6523453</uid>
  <uid>94593453</uid>
</items>

解析这些文档的最快方法是什么?
1) XML DOM
2) XML 序列化 - 再水化为 .NET 对象
3) 其他一些方法

更新
我忘了提到平均大约有 8000 个 uid 元素。

4

3 回答 3

4

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

比较您建议的两个:序列化应该比使用 DOM 更快,因为(我相信)它不会将整个树缓存在内存中 - 如果您专门针对执行序列化,它当然也有一个更易于使用的界面.

于 2009-05-27T23:57:32.583 回答
2

我会说 Xml 序列化将是两全其美的。您将获得易用性以及良好的速度。xml 序列化有一些额外的开销......但是,如果您手动使用 XmlReader,那么当您使用该阅读器重新创建对象图时,您至少会自行复制(如果不超过)该开销。

于 2009-05-28T00:09:24.713 回答
1

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

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

于 2009-05-28T02:07:26.597 回答