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
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.Zorg ervoor dat het project verwijst naar de
System.Xml
naamruimte.Gebruik de
Imports
instructie voor deXml
enXPath
naamruimten, zodat u declaraties in deze naamruimten later in uw code niet hoeft te kwalificeren. U moet deImports
instructie gebruiken vóór andere declaraties.Imports System.Xml Imports System.Xml.XPath
Declareer de juiste variabelen. Declareer een
XPathDocument
object voor het opslaan van het XML-document en eenXPathNavigator
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
Laad een
XPathDocument
object met het voorbeeldbestandBooks.xml
. DeXPathDocument
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")
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
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()
Gebruik de
MoveToFirstChild
methode om naar de onderliggende elementen van het XML-document te gaan. DeMoveToFirstChild
methode wordt verplaatst naar het eerste onderliggende element van het huidige knooppunt. In het geval van deBooks.xml
bron gaat u van het hoofddocument naar de onderliggende items, deComment
sectie en het knooppunt Boekopslag.'Move to the first child node (comment field). nav.MoveToFirstChild()
Gebruik de
MoveToNext
methode om knooppunten op hetzelfde niveau te doorlopen. DeMoveToNext
methode wordt verplaatst naar het volgende niveau van het huidige knooppunt.'Loop through all the root nodes. Do ... Loop While nav.MoveToNext
Gebruik de
NodeType
eigenschap om ervoor te zorgen dat u alleen elementknooppunten verwerkt en gebruik deValue
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
Gebruik de
HasAttributes
eigenschap om te bepalen of een knooppunt kenmerken heeft. U kunt ook andere methoden gebruiken, zoalsMoveToNextAttribute
, 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
Gebruik de
ReadLine
methode van hetConsole
object om een pauze toe te voegen aan het einde van de consoleweergave om de bovenstaande resultaten gemakkelijker weer te geven.'Pause. Console.ReadLine()
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
Feedback
Feedback verzenden en weergeven voor