使用XPathNavigator VS Xmlreader的XPathDocument?

时间:2011-12-31 13:00:50

标签: c# .net xml performance

我看到了这个问题:

XPathDocument vs. XmlDocument

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

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

我的问题来自xml 已经加载的阶段:

其中一个将更快地找到所需的元素:

  

XPathDocument with XPathNavigator

  

带有If条件的xmlReader

1 个答案:

答案 0 :(得分:2)

如果通过

  

“xml已加载”

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

两者之间的主要区别是XmlReader将提供只进访问,而XPathNavigator提供对文档的游标访问。当您不希望承担在内存中加载整个文档的成本时,直接与XmlReader交互非常有用。否则它就不那么有用了。

我强烈建议使用XPathNavigator。 您可以通过两种主要方式与XPathNavigator进行交互:

  1. 构建您的状态机(使用if / elses)。使用XPathNavigator而不是XmlReader执行此操作的一大优点是,由于XPathNavigator的游标访问模型,您的状态机将变得非常简单。例如:需要查看父级是否具有特定属性?只需导航到它并查看。
  2. 使用XPath查询查找您要查找的数据。可能不会那么快,但可能会比构建自己的状态机更不容易出错。当然这需要你精通XPath。