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

Traduzione articoli Traduzione articoli
Identificativo articolo: 308333 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo è stato precedentemente pubblicato con il codice di riferimento I308333
Espandi tutto | Chiudi tutto

In questa pagina

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.

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

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.

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.

Riferimenti

Il seguente file è disponibile per il download dall'Area download Microsoft (l'installazione è in inglese):
Download di Books.xml
Per ulteriori informazioni, visitare i seguenti siti Web Microsoft (informazioni in lingua inglese):
XML in .NET: le classi XML di NET Framework e C# offrono una manipolazione semplice e scalabile dei dati
http://msdn.microsoft.com/msdnmag/issues/01/01/xml/default.aspx

Classe XPathNavigator
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemXmlXPathXPathNavigatorClassTopic.asp

Classe XPathDocument
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemXmlXPathXPathDocumentClassTopic.asp

Classe XPathNodeIterator
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemXmlXPathXPathNodeIteratorClassTopic.asp

Trasformazioni XSLT con la classe XslTransform
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconxslttransformationswithxsltransformclass.asp

Esempi XPath
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/1431789e-c545-4765-8c09-3057e07d3041.asp

Sintassi XPath
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk30/htm/xmrefxpathsyntax.asp
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

Proprietà

Identificativo articolo: 308333 - Ultima modifica: martedì 23 gennaio 2007 - Revisione: 6.0
Le informazioni in questo articolo si applicano a
  • Microsoft ADO.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
Chiavi: 
kbdownload kbhowto kbhowtomaster KB308333
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com