類別XPathNavigator提供兩組導覽方法,第一組導覽方法可在 使用 XPathNavigator 的節點集瀏覽主題中找到,用於在或XPathDocument物件中的XmlDocument內巡覽。 本主題中所述的第二個集合是用來巡覽 或 物件中的XPathDocumentXmlDocument。
屬性節點導航
屬性是元素的特性,而不是元素的子元素。 XPathNavigator 類別的方法用於導航同層級節點、父節點和子節點,因此這項區別很重要。
例如,MoveToPrevious 和 MoveToNext 方法不會用來從元素巡覽至屬性或在屬性之間巡覽。 相反地,屬性具有不同的導覽方法。
以下是 XPathNavigator 類別的屬性導覽方法。
當目前的節點是元素時,您可以使用 HasAttributes 屬性來查看是否有任何與元素相關聯的屬性。 已知專案具有屬性之後,有多個方法來存取屬性。 若要從 專案擷取單一屬性,請使用 GetAttribute 方法。 若要將XPathNavigator移至特定屬性,請使用MoveToAttribute方法。 您也可以使用 MoveToFirstAttribute 方法逐一查看元素的每個屬性,然後多次呼叫 MoveToNextAttribute 方法。
備註
XPathNavigator當對象位於屬性或命名空間節點上時,MoveToChild、MoveToFirst、、MoveToFirstChildMoveToFollowing、、 MoveToIdMoveToNext 和 MoveToPrevious 方法一律會傳回 false
,而且不會影響 的位置XPathNavigator。 例外狀況為 MoveTo、 MoveToParent和 MoveToRoot 方法。
命名空間節點導航
每個元素都有一組相關聯的命名空間節點,這些節點中,每一個獨特的命名空間前置詞都系結至元素範圍內的命名空間 URI(包括隱含宣告在每個 XML 檔中的 http://www.w3.org/XML/1998/namespace
命名空間所系結的 XML 前置詞),如果元素範圍內存在預設命名空間,則也會有一個針對預設命名空間的節點。 元素是每個命名空間節點的父代;不過,命名空間節點不是其父元素的子系。
和屬性一樣,MoveToPrevious 和 MoveToNext 方法不會用來從元素導航至命名空間節點,或在命名空間節點之間導航。 相反地,命名空間節點具有不同的流覽方法。
以下是類別的 XPathNavigator 命名空間導覽方法。
XML 檔中任何元素的範圍中一律至少有一個命名空間節點。 這是具有前置詞 xml
和命名空間 URI http://www.w3.org/XML/1998/namespace
的命名空間節點。 若要在指定特定前置詞的範圍中擷取命名空間 URI,請使用 GetNamespace 方法。 若要將 XPathNavigator 物件移至特定命名空間節點,請使用 MoveToNamespace 方法。 您也可以使用 MoveToFirstNamespace 方法逐一查看元素範圍中的每個命名空間節點,然後多次呼叫 MoveToNextNamespace 方法。
備註
XPathNavigator當對象位於屬性或命名空間節點上時,MoveToChild、MoveToFirst、、MoveToFirstChildMoveToFollowing、、 MoveToIdMoveToNext 和 MoveToPrevious 方法一律會傳回 false
,而且不會影響 的位置XPathNavigator。 例外狀況為 MoveTo、 MoveToParent和 MoveToRoot 方法。
XPathNamespaceScope 列舉
巡覽命名空間節點時,可以使用MoveToFirstNamespace參數呼叫MoveToNextNamespace和XPathNamespaceScope方法。 這些方法的行為與沒有參數呼叫的對應專案不同。 列舉XPathNamespaceScope的值為All、ExcludeXml或Local。
下列範例顯示 XML 文件中各種範圍的 MoveToFirstNamespace 和 MoveToNextNamespace 方法所返回的命名空間。
<root>
<element1 xmlns="http://www.contoso.com" xmlns:books="http://www.contoso.com/books">
<element2 />
</element1>
</root>
命名空間序列(呼叫 XPathNavigator 方法後,將MoveToFirstNamespace 命名空間置於其上,接著呼叫一系列MoveToNextNamespace 方法),如下所示。
位於
element2
時:xmlns:books="http://www.contoso.com/books"
、xmlns="http://www.contoso.com"
和xmlns:xml="http://www.w3.org/XML/1998/namespace"
上。位於
element1
時:xmlns:books="http://www.contoso.com/books"
、xmlns="http://www.contoso.com"
和xmlns:xml="http://www.w3.org/XML/1998/namespace"
上。當定位在
root
時:xmlns:xml="http://www.w3.org/XML/1998/namespace".
備註
類別會 XPathNavigator 以反向檔順序傳回命名空間節點。 因此, MoveToFirstNamespace 基本上會移至目前範圍中的最後一個命名空間節點。
下列範例顯示在 XML 文件中各種範圍指定的列舉下,MoveToFirstNamespace 和 MoveToNextNamespace 方法所傳回的命名空間。
<root xmlns="http://www.contoso.com" xmlns:a="http://www.contoso.com/a" xmlns:b="http://www.contoso.com/b">
<child1 xmlns="" xmlns:a="urn:a">
<child2 xmlns:c="urn:c" />
</child1>
</root>
在child2
定位時,命名空間序列如下(即在呼叫XPathNavigator方法後所放置的命名空間MoveToFirstNamespace,並且接著呼叫一系列MoveToNextNamespace方法)。
All:
xmlns:c="urn:c"
、xmlns:a="urn:a"
、xmlns=""
、、xmlns:b="http://www.contoso.com/b"
xmlns:a="http://www.contoso.com/a"
、xmlns="http://www.contoso.com"
、 和xmlns:xml="http://www.w3.org/XML/1998/namespace"
。ExcludeXml:
xmlns:c="urn:c"
、xmlns:a="urn:a"
、xmlns=""
、xmlns:b="http://www.contoso.com/b"
、xmlns:a="http://www.contoso.com/a"
、 和xmlns="http://www.contoso.com"
。Local:
xmlns:c="urn:c"
。
備註
類別會 XPathNavigator 以反向檔順序傳回命名空間節點。 因此, MoveToFirstNamespace 基本上會移至目前範圍中的最後一個命名空間節點。