2011-12-31 97 views
2

我看到了這樣一個問題:XPathDocument與XPathNavigator VS Xmlreader?

XPathDocument vs. XmlDocument

但它不具有即時尋找的信息: 我的問題:

我知道的XPathDocument加載完整 XML到內存:

我的問題是從xml是已經加載的階段:

它們中的哪一個會更快找到所需的元素:

XPathDocument中與XPathNavigator的

XMLReader可以與如果的條件

+0

你期望有很大的區別嗎? – 2011-12-31 13:15:04

+1

@henk我期待NULL的區別,因爲我不知道答案,我在這裏問StackOverflow :) – 2011-12-31 13:17:33

+0

答案是:速度無所謂。使用最方便的方法解決您的問題。 – 2011-12-31 13:18:49

回答

2

如果

「的XML已加載」

你的意思,它已經將被加載到一個XPathDocument或XmlDocument的,然後使用無論是的XPathNavigator或XmlReader中的表現將是相同的。兩者都將遍歷已解析的表示XPath數據模型的內存節點。

兩者之間的主要區別在於XmlReader將提供只向前訪問,而XPathNavigator則提供對文檔的遊標訪問。當您不想承擔在內存中加載整個文檔的成本時,直接與XmlReader進行交互非常有用。否則它不那麼有用。

我強烈建議使用XPathNavigator。 主要有兩種方法可以使用XPathNavigator互動:

  1. 建立你的狀態機(使用如果/別人的)。由於XPathNavigator的遊標訪問模型,使用XPathNavigator而不是XmlReader執行此操作的一大優點是,狀態機將非常簡單。例如:需要查看父母是否有特定的屬性?只需導航到它並看一看。
  2. 使用XPath查詢來查找您要查找的數據。可能不會那麼快,但可能會比構建自己的狀態機更少出錯。當然,這需要你精通XPath。