Esplorare XML con la classe XPathNavigator usando Visual Basic
Questo articolo descrive alcuni passaggi di esempio e codice di esempio per spostarsi in XML usando la XPathNavigator
classe in Visual Basic 2005 o in Visual Basic .NET.
Versione originale del prodotto: Visual Basic 2005, Visual Basic .NET
Numero KB originale: 301111
Riepilogo
Questo articolo dettagliato illustra come esplorare i documenti XML (Extensible Markup Language) con un XPathNavigator
oggetto creato da un XPathDocument
oggetto . Questo esempio carica un XPathDocument
oggetto con dati XML, crea un XPathNavigator
oggetto come visualizzazione sui dati e visualizza il codice XML esaminando il documento.
Per una versione di Microsoft Visual C# di questo articolo, vedere Usare Visual C# per esplorare i documenti XML con la classe XPathNavigator.
Requisiti
L'elenco seguente descrive l'hardware, il software, l'infrastruttura di rete e i Service Pack consigliati necessari:
- Windows Server 2003, Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server o Windows NT 4.0 Server
- Visual Studio 2005 o Visual Studio .NET
Questo articolo presuppone che si abbia familiarità con gli argomenti seguenti:
- Terminologia XML
- Creazione e lettura di file XML
- Sintassi XPath (XML Path Language)
Usare la classe XPathNavigator per spostarsi in XML
In Visual Studio 2005 o in Visual Studio. NET, creare un'applicazione console .NET di Visual Basic 2005 o Visual Basic.
Nota
In questo esempio viene utilizzato un file denominato Books.xml. È possibile creare un file diBooks.xml personalizzato oppure usare l'esempio incluso nelle guide introduttive di .NET Software Development Kit (SDK). Se sono installate le guide introduttive, Books.xml si trova nella cartella :
\Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB
In alternativa, è possibile ottenere questo file visitando: File XML di esempio (books.xml)
È necessario copiare Books.xml nella
\Bin\Debug
cartella che si trova nella cartella in cui è stato creato il progetto.Assicurarsi che il progetto faccia riferimento allo spazio dei
System.Xml
nomi.Usare l'istruzione
Imports
negliXml
spazi dei nomi eXPath
in modo che non sia necessario qualificare le dichiarazioni in tali spazi dei nomi più avanti nel codice. È necessario usare l'istruzioneImports
prima di qualsiasi altra dichiarazione.Imports System.Xml Imports System.Xml.XPath
Dichiarare le variabili appropriate. Dichiarare un
XPathDocument
oggetto in cui contenere il documento XML e unXPathNavigator
oggetto per valutare le espressioni XPath e spostarsi nel documento. Dichiarare un oggetto String per contenere l'espressione XPath. Aggiungere il codice di dichiarazione nella routine Main in Module1.Dim nav As XPathNavigator Dim docNav As XPathDocument
Caricare un
XPathDocument
oggetto con il fileBooks.xml
di esempio . LaXPathDocument
classe usa XSLT (Extensible Stylesheet Language Transformations) per fornire una cache rapida e orientata alle prestazioni per l'elaborazione di documenti XML. È simile al DOM (Document Object Model) XML, ma è altamente ottimizzato per l'elaborazione XSLT e il modello di dati XPath.'Open the XML. docNav = New XPathDocument("books.xml")
Creare un
XPathNavigator
oggetto dal documento.XPathNavigator
consente di spostarsi tra i nodi attributi e i nodi dello spazio dei nomi in un documento XML.'Create a navigator to query with XPath. nav = docNav.CreateNavigator
Passare alla radice del documento con il
MoveToRoot
metodo .MoveToRoot
imposta lo strumento di navigazione sul nodo del documento che contiene l'intero albero dei nodi.'Initial XPathNavigator to start at the root. nav.MoveToRoot()
Utilizzare il
MoveToFirstChild
metodo per passare agli elementi figlio del documento XML. IlMoveToFirstChild
metodo passa al primo elemento figlio del nodo corrente. Nel caso dell'origineBooks.xml
, si sta allontanando dal documento radice negli elementi figlio, nellaComment
sezione e nel nodo Bookstore.'Move to the first child node (comment field). nav.MoveToFirstChild()
Usare il
MoveToNext
metodo per scorrere i nodi a livello di pari livello. IlMoveToNext
metodo passa all'elemento di pari livello successivo del nodo corrente.'Loop through all the root nodes. Do ... Loop While nav.MoveToNext
Utilizzare la
NodeType
proprietà per assicurarsi di elaborare solo i nodi dell'elemento e utilizzare laValue
proprietà per visualizzare la rappresentazione di testo dell'elemento.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
Utilizzare la
HasAttributes
proprietà per determinare se un nodo dispone di attributi. È anche possibile usare altri metodi, adMoveToNextAttribute
esempio , per passare a un attributo e controllarne il valore.Nota
Questo segmento di codice esamina solo i discendenti del nodo radice e non l'intero albero.
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
Utilizzare il
ReadLine
metodo dell'oggettoConsole
per aggiungere una pausa alla fine della visualizzazione della console per visualizzare più facilmente i risultati precedenti.'Pause. Console.ReadLine()
Compilare ed eseguire il progetto applicazione console.
Elenco di codice completo
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
Riferimenti
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per