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

  1. 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.

  2. Assicurarsi che il progetto faccia riferimento allo spazio dei System.Xml nomi.

  3. Usare l'istruzione Imports negli Xml spazi dei nomi e XPath in modo che non sia necessario qualificare le dichiarazioni in tali spazi dei nomi più avanti nel codice. È necessario usare l'istruzione Imports prima di qualsiasi altra dichiarazione.

    Imports System.Xml
    Imports System.Xml.XPath
    
  4. Dichiarare le variabili appropriate. Dichiarare un XPathDocument oggetto in cui contenere il documento XML e un XPathNavigator 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
    
  5. Caricare un XPathDocument oggetto con il file Books.xmldi esempio . La XPathDocument 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")
    
  6. 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
    
  7. 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()
    
  8. Utilizzare il MoveToFirstChild metodo per passare agli elementi figlio del documento XML. Il MoveToFirstChild metodo passa al primo elemento figlio del nodo corrente. Nel caso dell'origine Books.xml , si sta allontanando dal documento radice negli elementi figlio, nella Comment sezione e nel nodo Bookstore.

    'Move to the first child node (comment field).
    nav.MoveToFirstChild()
    
  9. Usare il MoveToNext metodo per scorrere i nodi a livello di pari livello. Il MoveToNext metodo passa all'elemento di pari livello successivo del nodo corrente.

    'Loop through all the root nodes.
    Do
    ...
    Loop While nav.MoveToNext
    
  10. Utilizzare la NodeType proprietà per assicurarsi di elaborare solo i nodi dell'elemento e utilizzare la Value 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
    
  11. Utilizzare la HasAttributes proprietà per determinare se un nodo dispone di attributi. È anche possibile usare altri metodi, ad MoveToNextAttributeesempio , 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
    
  12. Utilizzare il ReadLine metodo dell'oggetto Console per aggiungere una pausa alla fine della visualizzazione della console per visualizzare più facilmente i risultati precedenti.

    'Pause.
    Console.ReadLine()
    
  13. 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