Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net NET中的速度和XML解析-序列化vs XML DOM vs?_.net_Xml_Dom_Parsing_Xml Parsing - Fatal编程技术网

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

.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解析,但从未大规模进行过。 如果我正在处理许多类似于此格式的文档:

<?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。如果需要将数据作为对象进行操作,则使用序列化。