.net NET中的速度和XML解析-序列化vs XML DOM vs?
我以前做过XML解析,但从未大规模进行过。 如果我正在处理许多类似于此格式的文档:.net NET中的速度和XML解析-序列化vs XML DOM vs?,.net,xml,dom,parsing,xml-parsing,.net,Xml,Dom,Parsing,Xml Parsing,我以前做过XML解析,但从未大规模进行过。 如果我正在处理许多类似于此格式的文档: <?xml version="1.0" ?> <items comment="something..."> <uid>6523453</uid> <uid>94593453</uid> </items> 6523453 94593453 解析这些文档的最快方法是什么? 1) XML DOM 2) XML序列化-重新水
<?xml version="1.0" ?>
<items comment="something...">
<uid>6523453</uid>
<uid>94593453</uid>
</items>
6523453
94593453
解析这些文档的最快方法是什么?1) XML DOM
2) XML序列化-重新水化为.NET对象
3) 其他方法 更新
我忘了提到平均会有大约8000个uid元素。使用肯定是最快的方法,当然你必须手动完成所有解析。它直接从流中读取,而不缓存任何内容,尽管与DOM相比使用起来不太方便
比较您建议的两种方法:序列化应该比使用DOM更快,因为(我相信)它不会将整个树缓存在内存中——如果您特别想执行序列化,它当然还有一个更易于使用的接口。我想说,Xml序列化将是两种方法中最好的一种。你得到了易用性,以及良好的速度。xml序列化会带来一些额外的开销……但是,如果手动使用XmlReader,即使不能超过,至少也会进行复制,当您使用该读卡器重新创建对象图时,您将自行承担此开销。根据您对数据的处理需要,@Noldorin提到的XmlReader是流式处理的最佳选择。如果您需要使用XPath和XPathDocument对数据进行更多的即席式访问,那么XPathDocument将比原始XML文档快得多
这才是真正的答案:视情况而定。这取决于您想对数据做什么。如果您正在做“XML”工作(如XPATH查询、XSL转换等),那么您将需要XmlReader。如果需要将数据作为对象进行操作,则使用序列化。