Navigeren in XML met de klasse XPathNavigator met behulp van Visual Basic

In dit artikel worden enkele voorbeeldstappen en voorbeeldcode beschreven om door XML te navigeren met behulp van de XPathNavigator klasse in Visual Basic 2005 of in Visual Basic .NET.

Oorspronkelijke productversie: Visual Basic 2005, Visual Basic .NET
Oorspronkelijk KB-nummer: 301111

Samenvatting

In dit stapsgewijze artikel wordt beschreven hoe u door XML-documenten (Extensible Markup Language) navigeert met een XPathNavigator object dat is gemaakt op basis van een XPathDocument object. In dit voorbeeld wordt een XPathDocument object met XML-gegevens geladen, wordt een XPathNavigator object gemaakt als een weergave op de gegevens en wordt de XML weergegeven door door het document te lopen.

Zie Visual C# gebruiken om te navigeren in XML-documenten met de klasse XPathNavigator voor een Microsoft Visual C#-versie van dit artikel.

Vereisten

De volgende lijst bevat een overzicht van de aanbevolen hardware, software, netwerkinfrastructuur en servicepacks die u nodig hebt:

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

In dit artikel wordt ervan uitgegaan dat u bekend bent met de volgende onderwerpen:

  • XML-terminologie
  • XML-bestanden maken en lezen
  • Syntaxis van XML-padtaal (XPath)

De klasse XPathNavigator gebruiken om door XML te navigeren

  1. In Visual Studio 2005 of in Visual Studio. NET, maak een Visual Basic 2005- of Visual Basic .NET-consoletoepassing.

    Opmerking

    In dit voorbeeld wordt een bestand met de naam Books.xmlgebruikt. U kunt uw eigen Books.xml-bestand maken of u kunt het voorbeeld gebruiken dat is opgenomen in de quickstarts van de .NET Software Development Kit (SDK). Als u de quickstarts hebt geïnstalleerd, bevindt Books.xml zich in de map: \Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB

    U kunt dit bestand ook verkrijgen door naar het voorbeeld van een XML-bestand (books.xml) te gaan

    U moet Books.xml kopiëren naar de \Bin\Debug map die zich bevindt onder de map waarin u dit project hebt gemaakt.

  2. Zorg ervoor dat het project verwijst naar de System.Xml naamruimte.

  3. Gebruik de Imports instructie voor de Xml en XPath naamruimten, zodat u declaraties in deze naamruimten later in uw code niet hoeft te kwalificeren. U moet de Imports instructie gebruiken vóór andere declaraties.

    Imports System.Xml
    Imports System.Xml.XPath
    
  4. Declareer de juiste variabelen. Declareer een XPathDocument object voor het opslaan van het XML-document en een XPathNavigator object om XPath-expressies te evalueren en door het document te bladeren. Declareer een tekenreeksobject voor de XPath-expressie. Voeg de declaratiecode toe aan de hoofdprocedure in Module1.

    Dim nav As XPathNavigator
    Dim docNav As XPathDocument
    
  5. Laad een XPathDocument object met het voorbeeldbestand Books.xml. De XPathDocument klasse maakt gebruik van Extensible Stylesheet Language Transformations (XSLT) om een snelle en prestatiegerichte cache te bieden voor xml-documentverwerking. Het is vergelijkbaar met het DOM (XML Document Object Model), maar is sterk geoptimaliseerd voor XSLT-verwerking en het XPath-gegevensmodel.

    'Open the XML.
    docNav = New XPathDocument("books.xml")
    
  6. Maak een XPathNavigator object op basis van het document. XPathNavigator stelt u in staat om zowel de kenmerkenknooppunten als de naamruimteknooppunten in een XML-document te doorlopen.

    'Create a navigator to query with XPath.
    nav = docNav.CreateNavigator
    
  7. Ga met de methode naar de hoofdmap van het MoveToRoot document. MoveToRoot stelt de navigator in op het documentknooppunt dat de volledige structuur van knooppunten bevat.

    'Initial XPathNavigator to start at the root.
    nav.MoveToRoot()
    
  8. Gebruik de MoveToFirstChild methode om naar de onderliggende elementen van het XML-document te gaan. De MoveToFirstChild methode wordt verplaatst naar het eerste onderliggende element van het huidige knooppunt. In het geval van de Books.xml bron gaat u van het hoofddocument naar de onderliggende items, de Comment sectie en het knooppunt Boekopslag.

    'Move to the first child node (comment field).
    nav.MoveToFirstChild()
    
  9. Gebruik de MoveToNext methode om knooppunten op hetzelfde niveau te doorlopen. De MoveToNext methode wordt verplaatst naar het volgende niveau van het huidige knooppunt.

    'Loop through all the root nodes.
    Do
    ...
    Loop While nav.MoveToNext
    
  10. Gebruik de NodeType eigenschap om ervoor te zorgen dat u alleen elementknooppunten verwerkt en gebruik de Value eigenschap om de tekstweergave van het element weer te geven.

    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. Gebruik de HasAttributes eigenschap om te bepalen of een knooppunt kenmerken heeft. U kunt ook andere methoden gebruiken, zoals MoveToNextAttribute, om naar een kenmerk te gaan en de waarde ervan te controleren.

    Opmerking

    Dit codesegment loopt alleen door de nakomelingen van het hoofdknooppunt en niet door de hele structuur.

    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. Gebruik de ReadLine methode van het Console object om een pauze toe te voegen aan het einde van de consoleweergave om de bovenstaande resultaten gemakkelijker weer te geven.

    'Pause.
    Console.ReadLine()
    
  13. Bouw en voer uw consoletoepassingsproject uit.

Volledige codevermelding

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

Verwijzingen