共用方式為


使用 XPathNavigator 的屬性和命名空間節點導航

類別XPathNavigator提供兩組導覽方法,第一組導覽方法可在 使用 XPathNavigator 的節點集瀏覽主題中找到,用於在XPathDocument物件中的XmlDocument內巡覽。 本主題中所述的第二個集合是用來巡覽 或 物件中的XPathDocumentXmlDocument

屬性節點導航

屬性是元素的特性,而不是元素的子元素。 XPathNavigator 類別的方法用於導航同層級節點、父節點和子節點,因此這項區別很重要。

例如,MoveToPreviousMoveToNext 方法不會用來從元素巡覽至屬性或在屬性之間巡覽。 相反地,屬性具有不同的導覽方法。

以下是 XPathNavigator 類別的屬性導覽方法。

當目前的節點是元素時,您可以使用 HasAttributes 屬性來查看是否有任何與元素相關聯的屬性。 已知專案具有屬性之後,有多個方法來存取屬性。 若要從 專案擷取單一屬性,請使用 GetAttribute 方法。 若要將XPathNavigator移至特定屬性,請使用MoveToAttribute方法。 您也可以使用 MoveToFirstAttribute 方法逐一查看元素的每個屬性,然後多次呼叫 MoveToNextAttribute 方法。

備註

XPathNavigator當對象位於屬性或命名空間節點上時,MoveToChildMoveToFirst、、MoveToFirstChildMoveToFollowing、、 MoveToIdMoveToNextMoveToPrevious 方法一律會傳回 false,而且不會影響 的位置XPathNavigator。 例外狀況為 MoveToMoveToParentMoveToRoot 方法。

命名空間節點導航

每個元素都有一組相關聯的命名空間節點,這些節點中,每一個獨特的命名空間前置詞都系結至元素範圍內的命名空間 URI(包括隱含宣告在每個 XML 檔中的 http://www.w3.org/XML/1998/namespace 命名空間所系結的 XML 前置詞),如果元素範圍內存在預設命名空間,則也會有一個針對預設命名空間的節點。 元素是每個命名空間節點的父代;不過,命名空間節點不是其父元素的子系。

和屬性一樣,MoveToPreviousMoveToNext 方法不會用來從元素導航至命名空間節點,或在命名空間節點之間導航。 相反地,命名空間節點具有不同的流覽方法。

以下是類別的 XPathNavigator 命名空間導覽方法。

XML 檔中任何元素的範圍中一律至少有一個命名空間節點。 這是具有前置詞 xml 和命名空間 URI http://www.w3.org/XML/1998/namespace的命名空間節點。 若要在指定特定前置詞的範圍中擷取命名空間 URI,請使用 GetNamespace 方法。 若要將 XPathNavigator 物件移至特定命名空間節點,請使用 MoveToNamespace 方法。 您也可以使用 MoveToFirstNamespace 方法逐一查看元素範圍中的每個命名空間節點,然後多次呼叫 MoveToNextNamespace 方法。

備註

XPathNavigator當對象位於屬性或命名空間節點上時,MoveToChildMoveToFirst、、MoveToFirstChildMoveToFollowing、、 MoveToIdMoveToNextMoveToPrevious 方法一律會傳回 false,而且不會影響 的位置XPathNavigator。 例外狀況為 MoveToMoveToParentMoveToRoot 方法。

XPathNamespaceScope 列舉

巡覽命名空間節點時,可以使用MoveToFirstNamespace參數呼叫MoveToNextNamespaceXPathNamespaceScope方法。 這些方法的行為與沒有參數呼叫的對應專案不同。 列舉XPathNamespaceScope的值為AllExcludeXmlLocal

下列範例顯示 XML 文件中各種範圍的 MoveToFirstNamespaceMoveToNextNamespace 方法所返回的命名空間。

<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 文件中各種範圍指定的列舉下,MoveToFirstNamespaceMoveToNextNamespace 方法所傳回的命名空間。

<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方法)。

  • Allxmlns: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"

  • ExcludeXmlxmlns: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"

  • Localxmlns:c="urn:c"

備註

類別會 XPathNavigator 以反向檔順序傳回命名空間節點。 因此, MoveToFirstNamespace 基本上會移至目前範圍中的最後一個命名空間節點。

另請參閱