我看到了这个问题:

XPathDocument vs. XmlDocument

但是它没有我正在寻找的信息:
我的问题 :

我知道XPathDocument将完整的xml加载到内存中:

我的问题是从已经加载xml的阶段开始的:

其中哪一个可以更快地找到所需的元素:


  XPathDocument与XPathNavigator


要么


  具有If条件的xmlReader

最佳答案

如果通过


  “ xml已经加载”


您的意思是说它已经要被加载到XPathDocument或XmlDocument中,那么使用XPathNavigator或XmlReader的性能将是相同的。两者都将遍历表示XPath数据模型的已解析的内存中节点。

两者之间的主要区别是XmlReader将提供仅前向访问,而XPathNavigator将提供对文档的光标访问。当您不希望在内存中加载整个文档时,直接与XmlReader交互非常有用。否则不是那么有用。

我强烈建议使用XPathNavigator。
与XPathNavigator交互的主要方法有两种:


构建状态机(使用if / elses)。使用XPathNavigator而不是XmlReader进行此操作的一大好处是,由于XPathNavigator的游标访问模型,状态机将大大简化。例如:需要查看父母是否具有特定属性?只需浏览并查看。
使用XPath查询来查找所需的数据。可能不那么快,但是可能比构建自己的状态机更容易出错。当然,这需要您精通XPath。

10-04 12:03