Freigeben über


Attribut- und Namespaceknotennavigation mit XPathNavigator

Die XPathNavigator Klasse stellt zwei Sätze von Navigationsmethoden bereit. Die erste Gruppe, die im Thema „Node Set Navigation Using XPathNavigator“ zu finden ist, wird verwendet, um Knotensätze in einem - oder XPathDocument-Objekt zu navigieren. Der zweite Satz, der in diesem Thema beschrieben wird, wird zum Navigieren von Attribut- und Namespaceknoten in einem XPathDocument oder XmlDocument Objekt verwendet.

Navigieren durch Attributknoten

Attribute sind Eigenschaften eines Elements und keine Kind-Elemente eines Elements. Diese Unterscheidung ist wegen der zum Navigieren durch nebengeordnete, übergeordnete und untergeordnete Knoten verwendeten Methoden der XPathNavigator-Klasse wichtig.

Beispielsweise werden die MoveToPrevious Methoden und MoveToNext Methoden nicht verwendet, um von einem Element zu einem Attribut oder zwischen Attributen zu navigieren. Stattdessen weisen Attribute unterschiedliche Navigationsmethoden auf.

Im Folgenden sind die Attributnavigationsmethoden der XPathNavigator Klasse aufgeführt.

Wenn der aktuelle Knoten ein Element ist, können Sie mithilfe der HasAttributes Eigenschaft ermitteln, ob dem Element Attribute zugeordnet sind. Nachdem bekannt ist, dass ein Element Attribute aufweist, gibt es mehrere Methoden für den Zugriff auf Attribute. Verwenden Sie die GetAttribute Methode, um ein einzelnes Attribut aus dem Element abzurufen. Verwenden Sie die XPathNavigator Methode, um das MoveToAttribute Attribut in ein bestimmtes Attribut zu verschieben. Sie können auch jedes Attribut eines Elements durchlaufen, indem Sie die MoveToFirstAttribute Methode verwenden, gefolgt von mehreren Aufrufen der MoveToNextAttribute Methode.

Hinweis

Wenn das XPathNavigator Objekt auf einem Attribut- oder Namespaceknoten positioniert wird, geben die MoveToChild, MoveToFirst, MoveToFirstChild, MoveToFollowing, MoveToId, MoveToNext und MoveToPrevious Methoden immer false zurück und haben keine Auswirkungen auf die Position des XPathNavigator. Die Ausnahmen sind die MoveTo-Methoden, die MoveToParent-Methoden und die MoveToRoot-Methoden.

Namespace-Knotenpunkt-Navigation

Jedes Element verfügt über einen zugeordneten Satz von Namespaceknoten, eines für jedes unterschiedliche Namespacepräfix, das an einen Namespace-URI gebunden ist, im Bereich des Elements (einschließlich des XML-Präfixes, das an den http://www.w3.org/XML/1998/namespace Namespace gebunden ist, die implizit in jedem XML-Dokument deklariert wird) und eines für den Standardnamespace, wenn einer im Bereich des Elements liegt. Das Element ist der übergeordnete Knoten jedes dieser Namespaceknoten. Ein Namespaceknoten ist jedoch kein untergeordneter Knoten seines übergeordneten Elements.

Wie bei Attributen werden die MoveToPrevious und MoveToNext Methoden nicht verwendet, um von einem Element zu einem Namespaceknoten oder zwischen Namespaceknoten zu navigieren. Stattdessen weisen Namespaceknoten unterschiedliche Navigationsmethoden auf.

Im Folgenden sind die Namespacenavigationsmethoden der XPathNavigator Klasse aufgeführt.

Es gibt immer mindestens einen Namespaceknoten im Gültigkeitsbereich für jedes Element in einem XML-Dokument. Dies ist der Namespaceknoten mit dem Präfix xml und dem Namespace-URI http://www.w3.org/XML/1998/namespace. Um einen Namespace-URI im Geltungsbereich eines angegebenen Präfixes abzurufen, verwenden Sie die GetNamespace Methode. Verwenden Sie die XPathNavigator Methode, um das MoveToNamespace Objekt in einen bestimmten Namespaceknoten zu verschieben. Sie können auch mit der MoveToFirstNamespace-Methode alle gültigen Namespaceknoten eines Elements durchlaufen und dann mehrmals die MoveToNextNamespace-Methode aufrufen.

Hinweis

Wenn das XPathNavigator Objekt auf einem Attribut- oder Namespaceknoten positioniert wird, geben die MoveToChild, MoveToFirst, MoveToFirstChild, MoveToFollowing, MoveToId, MoveToNext und MoveToPrevious Methoden immer false zurück und haben keine Auswirkungen auf die Position des XPathNavigator. Die Ausnahmen sind die MoveTo-Methoden, die MoveToParent-Methoden und die MoveToRoot-Methoden.

Die XPathNamespaceScope-Enumeration

Beim Navigieren durch Namespaceknoten können die MoveToFirstNamespace-Methode und die MoveToNextNamespace-Methode mit dem XPathNamespaceScope-Parameter aufgerufen werden. Diese Methoden verhalten sich anders als ihre Gegenstücke, die ohne Parameter aufgerufen werden. Die XPathNamespaceScope Aufzählung weist Werte von All, ExcludeXml oder Local auf.

In den folgenden Beispielen wird gezeigt, welche Namespaces von den Methoden MoveToFirstNamespace und MoveToNextNamespace in den verschiedenen Bereichen eines XML-Dokuments zurückgegeben werden.

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

Die Namespacesequenz (der Namespace, auf dem XPathNavigator nach dem Aufrufen der MoveToFirstNamespace Methode positioniert ist, gefolgt von einer Reihe von Aufrufen der MoveToNextNamespace Methode) lautet wie folgt.

  • Wenn es auf element2 positioniert ist: xmlns:books="http://www.contoso.com/books", xmlns="http://www.contoso.com" und xmlns:xml="http://www.w3.org/XML/1998/namespace".

  • Wenn es auf element1 positioniert ist: xmlns:books="http://www.contoso.com/books", xmlns="http://www.contoso.com" und xmlns:xml="http://www.w3.org/XML/1998/namespace".

  • Bei Positionierung auf root: xmlns:xml="http://www.w3.org/XML/1998/namespace".

Hinweis

Die XPathNavigator Klasse gibt Namespaceknoten in umgekehrter Dokumentreihenfolge zurück. Daher erfolgt mit MoveToFirstNamespace in Wirklichkeit ein Verschiebevorgang auf den letzten Namespaceknoten im aktuellen Gültigkeitsbereich.

In den folgenden Beispielen wird gezeigt, welche Namespaces von den Methoden MoveToFirstNamespace und MoveToNextNamespace zurückgegeben werden, wenn die XPathNamespaceScope-Aufzählung in verschiedenen Bereichen eines XML-Dokuments angegeben ist.

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

Wenn child2 positioniert ist, lautet die Namespacesequenz (der Namespace, auf dem sich XPathNavigator nach dem Aufruf der MoveToFirstNamespace-Methode und einer Reihe von Aufrufen der MoveToNextNamespace-Methode befindet) wie folgt.

  • 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" und 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" und xmlns="http://www.contoso.com".

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

Hinweis

Die XPathNavigator Klasse gibt Namespaceknoten in umgekehrter Dokumentreihenfolge zurück. Daher erfolgt mit MoveToFirstNamespace in Wirklichkeit ein Verschiebevorgang auf den letzten Namespaceknoten im aktuellen Gültigkeitsbereich.

Siehe auch