Esecuzione di query XML con una espressione XPath utilizzando Visual C# .NET

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I308333
Per la versione di questo articolo relativa a Microsoft Visual Basic .NET, vedere 301220.

In questo articolo si fa riferimento al seguente spazio dei nomi della libreria di classi di Microsoft .NET Framework:
  • System.Xml.XPath

CONTENUTO DELL'ATTIVITÀ

Sommario
In questo articolo viene descritto come eseguire una query in un oggetto XPathDocument con una espressione XPath (XML Path Language) utilizzando la classe XPathNavigator. XPath viene utilizzato a livello di programmazione per valutare espressioni e selezionare nodi specifici in un documento.

Torna all'inizio

Requisiti

Nell'elenco seguente vengono indicati l'hardware, il software, l'infrastruttura di rete e i service pack necessari:
  • Visual C# .NET
In questo articolo si presume la conoscenza dei seguenti argomenti:
  • Terminologia XML
  • Creazione e lettura di un file XML
  • Sintassi di XPath
Torna all'inizio

Esecuzione di query XML con una espressione XPath

  1. Creare una nuova applicazione console C# . NET in Visual Studio .NET.

    NOTA: in questo esempio viene utilizzato un file denominato Books.xml. È possibile creare un file Books.xml proprio o servirsi dell'esempio incluso in .NET Software Development Kit (SDK) Quickstart. Se non sono installati i Quickstart e non si desidera installarli, consultare la sezione "Riferimenti" per il percorso di download del file Books.xml. Se i Quickstart sono installati, il file si trova nella seguente cartella:
    Programmi\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB
    È necessario copiare il file nella cartella \Bin\Debug, che si trova all'interno della cartella in cui è stato creato questo progetto.
  2. Verificare che il progetto faccia riferimento allo spazio dei nomi System.Xml.
  3. Utilizzare l'istruzione using negli spazi dei nomi Xml e XPath in modo che non sia necessario qualificare le dichiarazioni in tali spazi dei nomi di seguito nel codice. L'istruzione using deve essere utilizzata prima di qualunque altra dichiarazione, come illustrato di seguito:
    using System.Xml; using System.Xml.XPath;
  4. Dichiarare le variabili corrette. Dichiarare un oggetto XPathDocument che contenga il documento XML, un oggetto XpathNavigator per valutare le espressioni XPath e un oggetto XPathNodeIterator per scorrere i nodi selezionati. Dichiarare un oggetto String che contenga le espressioni XPath. Aggiungere il codice della dichiarazione nella funzione Main di Class1.
        XPathNavigator nav;    XPathDocument docNav;    XPathNodeIterator NodeIter;    String strExpression;
  5. Caricare XPathDocument con il file di esempio Books.xml. La classe XPathDocument utilizza XSLT (Extensible Stylesheet Language Transformations) per fornire una cache veloce e orientata alle prestazioni per l'elaborazione di documenti XML. È simile al modello DOM (Document Object Model) XML, ma altamente ottimizzata per l'elaborazione di XSLT e per il modello dati XPath.
         // Open the XML.     docNav = new XPathDocument(@"c:\books.xml");
  6. Creare un oggetto XPathNavigator dal documento. L'oggetto XPathNavigator viene impiegato solo in query XPath di sola lettura. Le query XPath possono restituire un valore risultante o molti nodi.
         // Create a navigator to query with XPath.     nav = docNav.CreateNavigator();					
  7. Creare una espressione XPath per trovare il costo medio di un libro. Questa espressione XPath restituisce un solo valore. Per informazioni dettagliate sulla sintassi XPath, vedere "Sintassi XPath" nella sezione "Riferimenti".
         // Find the average cost of a book.     // This expression uses standard XPath syntax.     strExpression = "sum(/bookstore/book/price) div count(/bookstore/book/price)";					
  8. Utilizzare il metodo Evaluate dell'oggetto XPathNavigator per valutare l'espressione XPath. Il metodo Evaluate restituisce i risultati dell'espressione.
        // Use the Evaluate method to return the evaluated expression.    Console.WriteLine("The average cost of the books are {0}", nav.Evaluate(strExpression));
  9. Creare una espressione XPath per trovare tutti i libri che costano più di dieci dollari. Questa espressione XPath restituisce solo nodi Title dall'origine XML.
        // Find the title of the books that are greater then $10.00.    strExpression = "/bookstore/book/title[../price>10.00]";					
  10. Creare un oggetto XPathNodeIterator per i nodi selezionati con il metodo Select di XPathNavigator. XPathNodeIterator rappresenta un nodeset XPath e pertanto supporta operazioni in questo nodeset.
        // Select the node and place the results in an iterator.    NodeIter = nav.Select(strExpression);
  11. Utilizzare l'oggetto XPathNodeIterator restituito dal metodo Select di XPathNavigator per spostarsi tra i nodi selezionati. In questo caso è possibile utilizzare il metodo MoveNext di XPathNodeIterator per scorrere tutti i nodi selezionati.
      Console.WriteLine("List of expensive books:");  //Iterate through the results showing the element value.  while (NodeIter.MoveNext())  {      Console.WriteLine("Book Title: {0}", NodeIter.Current.Value);  };					
  12. Utilizzare il metodo ReadLine per aggiungere una pausa alla fine della visualizzazione della console in modo da visualizzare più rapidamente i risultati sopra indicati.
        // Pause    Console.ReadLine();					
  13. Generare ed eseguire il progetto. Si noti che nella finestra della console sono visualizzati i risultati.
Torna all'inizio

Risoluzione dei problemi

In fase di verifica del codice, è possibile che venga visualizzato un messaggio di errore di eccezione analogo al seguente:
Eccezione non gestita di tipo 'System.Xml.XmlException' in System.xml.dll.

Ulteriori informazioni: Errore di sistema.
L'errore di eccezione si verifica nella seguente riga di codice:
docNav = new XPathDocument("c:\\books.xml");				
Questo errore è causato da un'istruzione di elaborazione non valida, ad esempio perchè contiene spazi estranei. Di seguito è riportato un esempio di istruzione di elaborazione non valida:
<?xml version='1.0' ?>
Per risolvere l'eccezione, effettuare una delle seguenti operazioni:
  • Correggere l'istruzione di elaborazione non valida. Di seguito è riportato un esempio di istruzione di elaborazione valida:
    <?xml version='1.0'?>
    oppure
  • Rimuovere l'istruzione di elaborazione XML dal file Books.xml.
Torna all'inizio
Riferimenti
Il seguente file è disponibile per il download dall'Area download Microsoft (l'installazione è in inglese):
Per ulteriori informazioni, visitare i seguenti siti Web Microsoft (informazioni in lingua inglese): Per ulteriori informazioni su XPath, visitare il seguente sito Web W3C (World Wide Web Consortium) (informazioni in lingua inglese):
Linguaggio XML Path (XPath)
Versione 1.0: Raccomandazione W3C del 16 novembre 1999
http://www.w3.org/TR/1999/REC-xpath-19991116
Torna all'inizio
Proprietà

ID articolo: 308333 - Ultima revisione: 01/23/2007 19:06:11 - Revisione: 6.0

Microsoft ADO.NET 1.0, Microsoft Visual C# .NET 2002 Standard Edition

  • kbdownload kbhowto kbhowtomaster KB308333
Feedback