我看到了这个问题:
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。