Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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"
undxmlns: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"
undxmlns: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"
undxmlns: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"
undxmlns="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.