共用方式為


使用 XPathNavigator 的屬性及命名空間節點巡覽

更新: November 2007

XPathNavigator 類別提供兩組巡覽方法,第一組 (可在 使用 XPathNavigator 的節點集巡覽 主題中找到) 用於巡覽 XPathDocumentXmlDocument 物件中的節點集。第二組 (在本主題中說明) 用於巡覽 XPathDocumentXmlDocument 物件中的屬性及命名空間節點。

屬性節點巡覽

屬性 (Attribute) 是項目的屬性 (Property),而不是項目的子系。這個差別是很重要的,因為這關係到用來巡覽同層級節點、父節點及子節點之 XPathNavigator 類別的方法。

例如,MoveToPreviousMoveToNext 方法無法用來從項目巡覽到屬性,或在屬性之間巡覽。應改用不同的方法來巡覽屬性。

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

當目前的節點為項目時,您可以使用 HasAttributes 屬性 (Property),來查看是否有與項目相關的屬性 (Attribute)。一旦知道項目有屬性,就有多種存取屬性的方法。若要從項目擷取單一屬性,請使用 GetAttribute 方法。若要將 XPathNavigator 移至特定的屬性,請使用 MoveToAttribute 方法。您還可以重複處理項目的每個屬性,方法是使用 MoveToFirstAttribute 方法,然後多次呼叫 MoveToNextAttribute 方法。

注意事項:

XPathNavigator 物件定位於屬性或命名空間節點上時,MoveToChildMoveToFirstMoveToFirstChildMoveToFollowingMoveToIdMoveToNextMoveToPrevious 方法一律會傳回 false,且對 XPathNavigator 的位置毫無影響。MoveToMoveToParentMoveToRoot 方法則例外。

命名空間節點巡覽

每個項目都有一組相關聯的命名空間節點,一個用於每個與此項目範圍內命名空間 URI 繫結的個別命名空間前置詞 (包括繫結至 http://www.w3.org/XML/1998/namespace 命名空間的 XML 前置詞,其在每個 XML 文件中隱含宣告),另一個用於預設命名空間 (若命名空間節點位於此項目的範圍內)。此項目為上述每個命名空間節點的父代;但命名空間節點並非其父項目的子系。

與屬性一樣,MoveToPreviousMoveToNext 方法無法用來從項目巡覽到命名空間節點,或在命名空間節點之間巡覽。而是命名空間節點具有不同的巡覽方法。

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

在 XML 文件中,任何項目的範圍內總是至少有一個命名空間節點。此命名空間節點具有前置詞 xml 及命名空間 URI http://www.w3.org/XML/1998/namespace。若要在給定特定前置詞的情況下,擷取範圍內的命名空間 URI,請使用 GetNamespace 方法。若要將 XPathNavigator 物件移至特定的命名空間節點,請使用 MoveToNamespace 方法。您還可以重複處理項目範圍內的每個命名空間節點,方法是使用 MoveToFirstNamespace 方法,然後多次呼叫 MoveToNextNamespace 方法。

注意事項:

XPathNavigator 物件定位於屬性或命名空間節點上時,MoveToChildMoveToFirstMoveToFirstChildMoveToFollowingMoveToIdMoveToNextMoveToPrevious 方法一律會傳回 false,且對 XPathNavigator 的位置毫無影響。MoveToMoveToParentMoveToRoot 方法則例外。

XPathNamespaceScope 列舉型別

巡覽命名空間節點時,可使用 XPathNamespaceScope 參數呼叫 MoveToFirstNamespaceMoveToNextNamespace 方法。這些方法的行為模式,與其不使用參數呼叫的對應方法不同。XPathNamespaceScope 列舉型別具有值 AllExcludeXmlLocal

下列範例顯示在 XML 文件的不同範圍由 MoveToFirstNamespaceMoveToNextNamespace 方法傳回的命名空間。

<root>
    <element1 xmlns="https://www.contoso.com" xmlns:books="https://www.contoso.com/books">
        <element2 />
    </element1>
</root>

命名空間序列 (在呼叫 MoveToFirstNamespace 方法,然後對 MoveToNextNamespace 方法進行一系列呼叫之後,XPathNavigator 所在的命名空間) 如下所示。

  • 當定位於 element2 上時:xmlns:books="https://www.contoso.com/books"、xmlns="https://www.contoso.com" 及 xmlns:xml="http://www.w3.org/XML/1998/namespace"。

  • 當定位於 element1 上時:xmlns:books="https://www.contoso.com/books"、xmlns="https://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 文件的不同範圍指定了 XPathNamespaceScope 列舉型別時,由 MoveToFirstNamespaceMoveToNextNamespace 方法傳回的命名空間。

<root xmlns="https://www.contoso.com" xmlns:a="https://www.contoso.com/a" xmlns:b="https://www.contoso.com/b">
    <child1  xmlns:a="urn:a">
        <child2 xmlns:c="urn:c" />
    </child1>
</root>

當定位於 child2 時,命名空間序列 (在呼叫 MoveToFirstNamespace 方法,然後對 MoveToNextNamespace 方法進行一系列呼叫之後,XPathNavigator 所在的命名空間) 如下所示。

  • All:xmlns:c="urn:c"、xmlns:a="urn:a"、、xmlns:b="https://www.contoso.com/b"、xmlns:a="https://www.contoso.com/a"、xmlns="https://www.contoso.com" 及 xmlns:xml="http://www.w3.org/XML/1998/namespace"。

  • ExcludeXml:xmlns:c="urn:c"、xmlns:a="urn:a"、、xmlns:b="https://www.contoso.com/b"、xmlns:a="https://www.contoso.com/a" 及 xmlns="https://www.contoso.com"。

  • Local: xmlns:c="urn:c".

注意事項:

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

請參閱

概念

使用 XPath 資料模型處理 XML 資料

使用 XPathNavigator 的節點集巡覽

使用 XPathNavigator 擷取 XML 資料

使用 XPathNavigator 存取強型別 XML 資料

參考

XmlDocument

XPathDocument

XPathNavigator