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

问题描述:

我之前完成了XML解析,但从未进行过大规模解析。 如果我有许多文件与此类似格式工作:.NET中的速度和XML解析 - 序列化vs XML DOM vs?

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

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

UPDATE
我忘了提及,将有平均约8000 UID元件。

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

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

我会说,Xml序列化将是两个世界中最好的。您可以轻松使用,并且速度也很快。使用xml序列化还有一些额外的开销...但是如果您手动使用XmlReader,那么至少在您使用该读取器重新创建对象图时,您自己至少可以复制该开销(如果不超过)。

根据你需要怎样处理数据,@Noldorin提到的XmlReader是流式处理的最佳选择。如果您需要使用XPath更多特殊式样的数据访问,并且XPathDocument将比原始XML文档快得多。

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

+2

这是真正的答案:它取决于。这取决于你想要对数据做什么。如果你在做“XML”事情(比如XPATH查询,XSL转换等),那么你需要XmlReader。如果您需要将数据作为对象进行操作,请使用序列化。 – 2009-05-28 19:23:32