Navigieren in XML mit der XPathNavigator-Klasse mithilfe von Visual Basic

In diesem Artikel werden einige Beispielschritte und Beispielcode zum Navigieren in XML mithilfe der XPathNavigator -Klasse in Visual Basic 2005 oder in Visual Basic .NET beschrieben.

Ursprüngliche Produktversion: Visual Basic 2005, Visual Basic .NET
Ursprüngliche KB-Nummer: 301111

Zusammenfassung

In diesem Schritt-für-Schritt-Artikel wird veranschaulicht, wie Sie in XML-Dokumenten (Extensible Markup Language) mit einem XPathNavigator Objekt navigieren, das aus einem XPathDocument -Objekt erstellt wird. In diesem Beispiel wird ein XPathDocument -Objekt mit XML-Daten geladen, ein XPathNavigator -Objekt als Ansicht für die Daten erstellt und der XML-Code angezeigt, indem das Dokument durchlaufen wird.

Eine Microsoft Visual C#-Version dieses Artikels finden Sie unter Verwenden von Visual C# zum Navigieren in XML-Dokumenten mit der XPathNavigator-Klasse.

Anforderungen

In der folgenden Liste sind die empfohlenen Hardware, Software, Netzwerkinfrastruktur und Service Packs aufgeführt, die Sie benötigen:

  • Windows Server 2003, Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server oder Windows NT 4.0 Server
  • Visual Studio 2005 oder Visual Studio .NET

In diesem Artikel wird davon ausgegangen, dass Sie mit den folgenden Themen vertraut sind:

  • XML-Terminologie
  • Erstellen und Lesen von XML-Dateien
  • XPath-Syntax (XML Path Language)

Verwenden der XPathNavigator-Klasse zum Navigieren in XML

  1. In Visual Studio 2005 oder in Visual Studio. NET erstellen Sie eine Visual Basic 2005- oder Visual Basic .NET-Konsolenanwendung.

    Hinweis

    In diesem Beispiel wird eine Datei mit dem NamenBooks.xmlverwendet. Sie können eine eigene Books.xml-Datei erstellen oder das Beispiel verwenden, das in den Schnellstarts für .NET Software Development Kit (SDK) enthalten ist. Wenn Sie die Schnellstartanleitungen installiert haben, befindet sich Books.xml im Ordner: \Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB

    Alternativ können Sie diese Datei auch unter Beispiel-XML-Datei (books.xml) abrufen.

    Sie müssen Books.xml in den Ordner kopieren, der \Bin\Debug sich unter dem Ordner befindet, in dem Sie dieses Projekt erstellt haben.

  2. Stellen Sie sicher, dass das Projekt auf den System.Xml Namespace verweist.

  3. Verwenden Sie die Imports -Anweisung für die Xml Namespaces und XPath , damit Sie Deklarationen in diesen Namespaces später in Ihrem Code nicht qualifizieren müssen. Sie müssen die Imports -Anweisung vor allen anderen Deklarationen verwenden.

    Imports System.Xml
    Imports System.Xml.XPath
    
  4. Deklarieren Sie die entsprechenden Variablen. Deklarieren Sie ein XPathDocument -Objekt, das das XML-Dokument enthält, und ein XPathNavigator -Objekt, um XPath-Ausdrücke auszuwerten und durch das Dokument zu navigieren. Deklarieren Sie ein String-Objekt, das den XPath-Ausdruck enthält. Fügen Sie den Deklarationscode in der Main-Prozedur in Module1 hinzu.

    Dim nav As XPathNavigator
    Dim docNav As XPathDocument
    
  5. Laden Sie ein XPathDocument Objekt mit der Beispieldatei Books.xml. Die XPathDocument -Klasse verwendet XSLT (Extensible Stylesheet Language Transformations), um einen schnellen und leistungsorientierten Cache für die XML-Dokumentverarbeitung bereitzustellen. Es ähnelt dem XML-Dom (Document Object Model), ist aber stark für die XSLT-Verarbeitung und das XPath-Datenmodell optimiert.

    'Open the XML.
    docNav = New XPathDocument("books.xml")
    
  6. Erstellen Sie ein XPathNavigator Objekt aus dem Dokument. XPathNavigator ermöglicht es Ihnen, sowohl die Attributknoten als auch die Namespaceknoten in einem XML-Dokument zu durchlaufen.

    'Create a navigator to query with XPath.
    nav = docNav.CreateNavigator
    
  7. Wechseln Sie mit MoveToRoot der -Methode zum Stamm des Dokuments. MoveToRoot legt den Navigator auf den Dokumentknoten fest, der die gesamte Struktur der Knoten enthält.

    'Initial XPathNavigator to start at the root.
    nav.MoveToRoot()
    
  8. Verwenden Sie die MoveToFirstChild -Methode, um zu den untergeordneten Elementen des XML-Dokuments zu wechseln. Die MoveToFirstChild -Methode wird zum ersten untergeordneten Element des aktuellen Knotens verschoben. Im Fall der Books.xml Quelle wechseln Sie weg vom Stammdokument in die untergeordneten Elemente, den Comment Abschnitt und den Knoten Bookstore.

    'Move to the first child node (comment field).
    nav.MoveToFirstChild()
    
  9. Verwenden Sie die MoveToNext -Methode, um Knoten auf gleichgeordneter Ebene zu durchlaufen. Die MoveToNext -Methode wechselt zum nächsten gleichgeordneten Element des aktuellen Knotens.

    'Loop through all the root nodes.
    Do
    ...
    Loop While nav.MoveToNext
    
  10. Verwenden Sie die NodeType -Eigenschaft, um sicherzustellen, dass Sie nur Elementknoten verarbeiten, und verwenden Sie die Value -Eigenschaft, um die Textdarstellung des Elements anzuzeigen.

    Do
    'Find the first element.
    If nav.NodeType = XPathNodeType.Element Then
    'If children exist.
    If nav.HasChildren Then
    
    'Move to the first child.
    nav.MoveToFirstChild()'Loop through all the children.
    Do
    'Display the data.
    Console.Write("The XML string for this child ")
    Console.WriteLine("is '{0}'", nav.Value)
    Loop While nav.MoveToNext
    
    End If
    End If
    Loop While nav.MoveToNext
    
  11. Verwenden Sie die HasAttributes -Eigenschaft, um zu bestimmen, ob ein Knoten über Attribute verfügt. Sie können auch andere Methoden wie MoveToNextAttributeverwenden, um zu einem Attribut zu wechseln und dessen Wert zu überprüfen.

    Hinweis

    Dieses Codesegment durchläuft nur die Nachfolger des Stammknotens und nicht die gesamte Struktur.

    Do
    'Find the first element.
    If nav.NodeType = XPathNodeType.Element Then
    'if children exist
    If nav.HasChildren Then
    
    'Move to the first child.
    nav.MoveToFirstChild()'Loop through all the children.
    Do
    'Display the data.
    Console.Write("The XML string for this child ")
    Console.WriteLine("is '{0}'", nav.Value)'Check for attributes.
    If nav.HasAttributes Then
    Console.WriteLine("This node has attributes")
    End If
    Loop While nav.MoveToNext
    
    End If
    End If
    Loop While nav.MoveToNext
    
  12. Verwenden Sie die ReadLine -Methode des Console -Objekts, um eine Pause am Ende der Konsolenanzeige hinzuzufügen, um die oben genannten Ergebnisse leichter anzuzeigen.

    'Pause.
    Console.ReadLine()
    
  13. Erstellen Sie Ihr Konsolenanwendungsprojekt, und führen Sie es aus.

Vollständige Codeauflistung

Imports System.Xml
Imports System.Xml.XPath

Module Module1

Sub Main()
Dim nav As XPathNavigator
Dim docNav As XPathDocument
docNav = New XPathDocument("books.xml")
nav = docNav.CreateNavigator
nav.MoveToRoot()'Move to the first child node (comment field).
nav.MoveToFirstChild()

Do
'Find the first element.
If nav.NodeType = XPathNodeType.Element Then
'if children exist
If nav.HasChildren Then

'Move to the first child.
nav.MoveToFirstChild()'Loop through all the children.
Do
'Display the data.
Console.Write("The XML string for this child ")
Console.WriteLine("is '{0}'", nav.Value)'Check for attributes.
If nav.HasAttributes Then
Console.WriteLine("This node has attributes")
End If
Loop While nav.MoveToNext

End If
End If
Loop While nav.MoveToNext

'Pause.
Console.ReadLine()

End Sub

End Module

References