Freigeben über


Das Navigieren durch Attribut- und Namespaceknoten mit "XPathNavigator"

Die XPathNavigator-Klasse stellt zwei Gruppen von Navigationsmethoden bereit: Die erste Gruppe, die unter dem Thema Navigieren in Knotengruppen mit XPathNavigator beschrieben wird, wird zum Navigieren durch Knotengruppen in einem XPathDocument-Objekt oder XmlDocument-Objekt verwendet. Die zweite Gruppe, die in diesem Thema beschrieben wird, wird zum Navigieren durch Attribut- und Namespaceknoten in einem XPathDocument-Objekt oder XmlDocument-Objekt verwendet.

Navigieren durch Attributknoten

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

Die MoveToPrevious-Methode und die MoveToNext-Methode werden z. B. nicht zum Navigieren von einem Element zu einem Attribut oder zwischen Attributen verwendet. Für Attribute gibt es andere Navigationsmethoden.

Es folgen die die Navigationsmethoden für Attribute der XPathNavigator-Klasse.

Wenn es sich bei dem aktuellen Knoten um ein Element handelt, können Sie mit der HasAttributes-Eigenschaft überprüfen, ob Attribute mit dem Element verbunden sind. Wenn bekannt ist, dass ein Element Attribute besitzt, bestehen mehrere Möglichkeiten, um auf die Attribute zuzugreifen. Verwenden Sie die GetAttribute-Methode zum Abrufen eines einzelnen Attributs aus dem Element. Verwenden Sie die XPathNavigator-Methode, um den MoveToAttribute auf ein bestimmtes Attribute zu positionieren. Sie können auch mit der MoveToFirstAttribute-Methode alle Attribute eines Elements durchlaufen und dann mehrmals die MoveToNextAttribute-Methode aufrufen.

Hinweis

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

Navigation durch Namespaceknoten

Jedes Element verfügt über zugeordnete Namespaceknoten, einen für jedes eindeutige Namespacepräfix, das an einen Namespace-URI im Gültigkeitsbereich des Elements gebunden ist (einschließlich des an den http://www.w3.org/XML/1998/namespace-Namespace gebundenen XML-Präfixes, das in jedem XML-Dokument implizit deklariert wird), und einen für den Standardnamespace, wenn sich ein solcher im Gültigkeitsbereich des Elements befindet. 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-Methode und die MoveToNext-Methode nicht zum Navigieren von einem Element zu einem Namespaceknoten oder zwischen Namespaceknoten verwendet. Für Namespaceknoten gibt es andere Navigationsmethoden.

Es folgen die Navigationsmethoden für Namspaces der XPathNavigator-Klasse.

Jedes Element eines XML-Dokuments befindet sich im Gültigkeitsbereich mindestens eines Namspaceknotens. Dies ist der Namespaceknoten mit dem Präfix xml und dem Namespace-URI http://www.w3.org/XML/1998/namespace. Verwenden Sie die GetNamespace-Methode zum Abrufen eines gültigen Namespace-URIs anhand eines bestimmten Präfixes. Verwenden Sie die XPathNavigator-Methode, um das MoveToNamespace-Objekt auf 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 ist, geben die Methoden MoveToChild, MoveToFirst, MoveToFirstChild, MoveToFollowing, MoveToId, MoveToNext und MoveToPrevious immer false zurück und haben keine Auswirkungen auf die Position des XPathNavigator. Die einzigen Ausnahmen sind die Methoden MoveTo, MoveToParent und MoveToRoot.

Die XPathNamespaceScope-Enumeration

Beim Navigieren durch Namespaceknoten können die MoveToFirstNamespace-Methode und die MoveToNextNamespace-Methode mit dem XPathNamespaceScope-Parameter aufgerufen werden. Das Verhalten dieser Methoden unterscheidet sich von dem ihrer Gegenstücke, die ohne Parameter aufgerufen werden. Die XPathNamespaceScope-Enumeration enthält die Werte von All, ExcludeXml oder Local.

In den folgenden Beispielen wird veranschaulicht, welche Namespaces von der MoveToFirstNamespace-Methode und der MoveToNextNamespace-Methode in den verschiedenen Gültigkeitsbereichen eines XML-Dokuments zurückgegeben werden.

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

Die Reihenfolge der Namespaces (der Namespace, auf dem der XPathNavigator nach dem Aufruf der MoveToFirstNamespace-Methode positioniert ist, gefolgt von Aufrufen der MoveToNextNamespace-Methode) lautet wie folgt.

  • Bei Positionierung auf element2: 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 element1: 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 veranschaulicht, welche Namespaces von der MoveToFirstNamespace-Methode und der MoveToNextNamespace-Methode bei Angabe der XPathNamespaceScope-Enumeration in den verschiedenen Gültigkeitsbereichen eines XML-Dokuments zurückgegeben werden.

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

Bei Positionierung auf child2 lautet die Reihenfolge der Namespaces (der Namespace, auf dem der XPathNavigator nach dem Aufruf der MoveToFirstNamespace-Methode positioniert ist, gefolgt von Aufrufen der MoveToNextNamespace-Methode) 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