次の方法で共有


XPathNavigator を使用する属性と名前空間のナビゲーション

更新 : November 2007

XPathNavigator クラスは、2 セットの移動メソッドを提供します。「XPathNavigator を使用するノード セットのナビゲーション」に記載されている最初のセットは XPathDocument または XmlDocument オブジェクト内のノード セットの移動に使用されます。ここに記載されている 2 つ目のセットは、XPathDocument または XmlDocument オブジェクト内の属性ノードおよび名前空間ノードの移動に使用されます。

属性ノードの移動

属性は要素のプロパティであり、要素の子ではありません。兄弟ノード、親ノード、および子ノードの移動には XPathNavigator クラスのメソッドが使用されるため、この区別が重要になります。

たとえば、MoveToPreviousMoveToNext メソッドは、要素から属性への移動や属性間の移動には使われません。代わりに、属性には異なる移動メソッドがあります。

以下は、XPathNavigator クラスの属性移動メソッドです。

現在のノードが要素のとき、その要素に関連付けられている属性があるかどうかを調べるには、HasAttributes プロパティを使用できます。要素に属性がある場合は、各種のメソッドで属性にアクセスできます。要素から 1 つの属性を取り出すには、GetAttribute メソッドを使用します。XPathNavigator を特定の属性に移動するには、MoveToAttribute メソッドを使用します。MoveToFirstAttribute メソッドに続けて複数の MoveToNextAttribute メソッド呼び出しを使用し、要素の各属性について繰り返すこともできます。

439wyfyh.alert_note(ja-jp,VS.90).gifメモ :

XPathNavigator オブジェクトが属性ノードまたは名前空間ノードの位置にある場合、MoveToChildMoveToFirstMoveToFirstChildMoveToFollowingMoveToIdMoveToNext、および MoveToPrevious メソッドは常に false を返し、XPathNavigator の位置には影響を与えません。この例外は、MoveToMoveToParent、および MoveToRoot メソッドです。

名前空間ノードの移動

各要素は関連する名前空間ノードの集合を持ちます。名前空間ノードは、要素のスコープ内にある名前空間 URI に関連付けられた異なる名前空間プレフィックス (http://www.w3.org/XML/1998/namespace に関連付けられた XML プレフィックスを含みます。XML プレフィックスはすべての XML ドキュメントで暗黙に宣言されます) それぞれについて 1 つ、さらに要素のスコープ内に既定の名前空間がある場合は、それに 1 つあります。要素はこれら名前空間ノードの親です。ただし、名前空間ノードはその親要素の子ではありません。

属性の場合と同様に、MoveToPrevious および MoveToNext メソッドは、要素から名前空間ノードへの移動や名前空間ノード間の移動には使われません。代わりに、名前空間ノードには異なる移動メソッドがあります。

以下は、XPathNavigator クラスの名前空間移動メソッドです。

XML ドキュメント内のすべての要素には常に少なくとも 1 つの名前空間ノードがあります。これは、プレフィックス xml および名前空間 URI http://www.w3.org/XML/1998/namespace を持つ名前空間ノードです。特定のプレフィックスを指定してスコープ内の名前空間 URI を取り出すには、GetNamespace メソッドを使用します。XPathNavigator オブジェクトを特定の名前空間ノードに移動するには、MoveToNamespace メソッドを使用します。MoveToFirstNamespace メソッドに続けて複数の MoveToNextNamespace メソッド呼び出しを使用し、要素のスコープ内の各名前空間ノードについて繰り返すこともできます。

439wyfyh.alert_note(ja-jp,VS.90).gifメモ :

XPathNavigator オブジェクトが属性ノードまたは名前空間ノードの位置にある場合、MoveToChildMoveToFirstMoveToFirstChildMoveToFollowingMoveToIdMoveToNext、および MoveToPrevious メソッドは常に false を返し、XPathNavigator の位置には影響を与えません。この例外は、MoveToMoveToParent、および MoveToRoot メソッドです。

XPathNamespaceScope 列挙体

名前空間ノードの移動時には、MoveToFirstNamespace および MoveToNextNamespace メソッドを XPathNamespaceScope パラメータを使用して呼び出すことができます。これらのメソッドは、パラメータなしで呼び出された場合と異なる動作をします。XPathNamespaceScope 列挙体には、AllExcludeXml、または Local の値があります。

次の例は、XML ドキュメント内のさまざまなスコープで MoveToFirstNamespace および MoveToNextNamespace メソッドによって返される値を表示します。

<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".

439wyfyh.alert_note(ja-jp,VS.90).gifメモ :

XPathNavigator クラスは、ドキュメントの逆順で名前空間ノードを返します。したがって、MoveToFirstNamespace は原則的に、現在のスコープ内の最後の名前空間ノードに移動します。

次の例は、XML ドキュメント内のさまざまなスコープで、XPathNamespaceScope 列挙体が指定された MoveToFirstNamespace および MoveToNextNamespace メソッドによって返される値を示します。

<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".

439wyfyh.alert_note(ja-jp,VS.90).gifメモ :

XPathNavigator クラスは、ドキュメントの逆順で名前空間ノードを返します。したがって、MoveToFirstNamespace は原則的に、現在のスコープ内の最後の名前空間ノードに移動します。

参照

概念

XPath データ モデルを使用した XML データの処理

XPathNavigator を使用するノード セットのナビゲーション

XpathNavigator を使用した XML データの抽出

厳密に型指定された XML データへの XPathNavigator を使用したアクセス

参照

XmlDocument

XPathDocument

XPathNavigator