更快的XmlReader跳过

时间:2015-04-01 19:06:13

标签: c# xml

我在分层树中有一个xml文档。我有一个节点,下面有几百万个孩子。

当我在该节点上运行XmlReader.Skip()时,需要几秒钟才能完成。有没有更快的方法来跳过所有的孩子并转移到下一个兄弟姐妹?

1 个答案:

答案 0 :(得分:4)

  

是否有更快的方法可以跳过所有孩子并转移到下一个兄弟姐妹?

如果没有看到您的代码,就无法确定可以采取哪些措施来加快速度。

但总的来说,没有。如果您真正要做的就是调用Skip()方法,并确保XmlReader配置为对XML进行最少的处理,那么它所花费的时间就是它需要的时间

读者必须解析所有中间XML数据,以找到您正在处理的节点的结束标记,以及“数百万子节点”,即大量数据和解析。

现在,它说:如果你愿意预处理数据并将其编入索引,那将是另一回事。但这需要做更多的工作。您不能只在XmlReader对象的状态下重置流位置,因此您需要更加手动地进行XML解析。这一切都取决于程序的这一部分快速发展的重要性。 :)

(它仍然需要索引XML,这本身会非常耗时。但这是一次性的耗时操作。)


另外,请注意XmlReader现在有等待async方法。这些不会使I / O本身变得更快,但如果这里的部分问题在UI中阻塞I / O非常耗时,那么使用它们至少可以帮助保持UI响应。

你在问题​​中没有提到任何这样的问题,而且据我所知,没有。但我想我也可以提一下,以防万一。