HOW TO: Eseguire query XPath utilizzando le classi System.Xml.XPath

Traduzione articoli Traduzione articoli
Identificativo articolo: 317069 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo passo passo viene illustrato come utilizzare le classi nello spazio dei nomi System.Xml.XPath per eseguire query XPath nelle applicazioni .NET.

Esplorare lo spazio dei nomi System.Xml.XPath

Lo spazio dei nomi System.Xml.XPath contiene il parser XPath e il motore di valutazione di .NET Framework. Lo spazio dei nomi System.Xml.XPath supporta il World Wide Web Consortium (W3C) XML Path Language (XPath) Version 1.0. Per ulteriori informazioni sulla raccomandazione di XPath, visitare il seguente sito Web W3C:
XML Path Language (XPath) Version 1.0
Lo spazio dei nomi System.Xml.XPath contiene inoltre le classi di riportato di seguito che sono ottimizzate per eseguire query XPath e spostarsi a livello di programmazione di gruppi di risultati generato:
  • XPathDocument : A prestazioni elevate, leggere - cache solo per l'elaborazione di documenti XML e i flussi. XPathDocument è ottimizzato per l'elaborazione di XSLT (Extensible Stylesheet Language Transformation) e per il modello dati XPath. XPathDocument utilizza il modello a oggetti documento (DOM): base del modello di analisi (carica il codice XML di origine in una struttura ad albero in memoria), ma non implementa le interfacce richieste per inserire, modificare o eliminare nodi in un documento XML (Extensible Markup Language) o un flusso.
  • XPathNavigator : questa classe è basata sul modello dati XPath. XPathNavigator fornisce i metodi necessari per poter eseguire query XPath su dati XML che viene caricati un oggetto XPathDocument . XPathNavigator viene creata un'istanza utilizzando il metodo CreateNavigator di un oggetto XPathDocument . È inoltre possibile utilizzare XPathNavigator per compilare le espressioni di query XPath eseguite frequentemente e generare un oggetto System.Xml.XPath.XPathExpression che incapsula la query compilata.
  • XPathNodeIterator : fornisce un iteratore di solo inoltro solo, lettura-. Quando si utilizza il metodo SELECT della oggetto XPathNavigator per eseguire una query XPath, viene creata un'istanza di XPathNodeIterator . È possibile utilizzare XPathNodeIterator per passare il gruppo di risultati generato dalla query XPath.
  • XPathExpression : implementazione di un'espressione di query XPath compilata. È necessario compilare un'espressione di query XPath prima di poter eseguire l'espressione di query. Un'espressione XPath compilata contiene sintassi viene verificato che conforme alla specifica W3C XPath Query Language. Una chiamata al metodo di compilazione di un oggetto XPathNavigator restituisce la classe XPathExpression . In genere, è possibile utilizzare XPathExpression per fornire un' precompilata query espressione XPath in una chiamata al metodo SELECT di un oggetto di XPathNavigator .
  • XPathException : eccezione di .NET Framework che viene generato quando si verifica un errore durante l'elaborazione di un'espressione di query XPath. Il metodo SELECT e il metodo Compile della classe XPathNavigator può generare XPathException .

Creazione di documenti XML di esempio

Per creare due documenti XML di esempio da utilizzare con il codice di esempio di .NET successivo, attenersi alla seguente procedura:
  1. Blocco note di utilizzo o in un editor di testo simile per incollare il codice riportato di seguito un nuovo documento XML denominato Books.Xml. Salvare il documento nella cartella principale sul disco rigido.
    <?xml version='1.0'?>
    <Books>
    <Book>
      <Title>Beginning XML</Title>
      <Publisher>Wrox</Publisher>
    </Book>
    <Book>
      <Title>XML Step by Step</Title>
      <Publisher>MSPress</Publisher>
    </Book>
    <Book>
      <Title>Professional XML</Title>
      <Publisher>Wrox</Publisher>
    </Book>
    <Book>
      <Title>Developing XML solutions</Title>
      <Publisher>MSPress</Publisher>
    </Book>
    </Books>
    					
  2. Blocco note di utilizzo o in un editor di testo simile per incollare il codice riportato di seguito un nuovo documento XML denominato DotNetBooks.xml. Salvare il documento nella cartella principale sul disco rigido.
    <?xml version='1.0'?>
    <DotNetBooks>
    <DotNetBook>
      <Title>Professional C#</Title>
      <Publisher>Wrox</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>ADO.Net Core Reference</Title>
      <Publisher>MSPress</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>Professional VB.Net</Title>
      <Publisher>Wrox</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>Inside C#</Title>
      <Publisher>MSPress</Publisher>
    </DotNetBook>
    </DotNetBooks>

Crea un progetto .NET di Visual Basic

  1. Avviare Visual Studio .NET e creare un nuovo progetto applicazione Windows Visual Basic. NET.
  2. Trascinare due controlli Button dalla casella degli strumenti a Form1.vb.
  3. Incollare il codice riportato di seguito nella procedura Click_Event del primo pulsante di comando:
    'Instantiate the XPathDocument class.
    Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")
    
    'Instantiate the XPathNavigator class.
    Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()
    
    'Instantiate the XPathIterator class.
    Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select("//Publisher[. = 'MSPress']/parent::node()/Title")
    
    'Use the XPathIterator class to navigate through the generated resultset
    'and then display the selected Titles.
    Do While iterator.MoveNext
        System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    					
  4. Leggere i commenti inline per comprendere le funzionalità del codice. Prestare attenzione specifico a come il codice crea un'istanza e utilizza istanze di oggetto di ciascuna delle classi nello spazio dei nomi System.Xml.XPath . Si noti che una stringa specifica il parametro di espressione di query XPath nella chiamata al metodo dell'oggetto XPathNavigator Seleziona .
  5. Incollare il codice riportato di seguito nella procedura Click_Event del secondo pulsante di comando:
    'Construct the XPathDocument by specifying the path to Books.xml.
    Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")
    
    'Create the XPathNavigator.
    Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()
    
    'Compile the XPath query expression to identify all MSPress Titles.
    'The Compile method of the XPathNavigator generates an XPathExpression object
    'that encapsulates the compiled query expression.
    
    Dim expr As System.Xml.XPath.XPathExpression = nav.Compile("//Publisher[. = 'MSPress']/parent::node()/Title")
    
    'Execute the Select method of the XPathNavigator to create the XPathNodeIterator.
    'Note that the sample code supplies the XPathExpression object as the query expression parameter.
    Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select(expr)
    
    System.Diagnostics.Debug.WriteLine("MSPress titles in books.xml...")
    System.Diagnostics.Debug.WriteLine("******************************")
    
    'Use the iterator to navigate the generated resultset.
    Do While iterator.MoveNext
        System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    
    
    'Release the XPathDocument and XPathNavigator.
    xmldoc = Nothing
    nav = Nothing
    
    System.Diagnostics.Debug.WriteLine(vbCrLf & "MSPress titles in DotNetBooks.xml...")
    System.Diagnostics.Debug.WriteLine("******************************")
    
    'Specify the path to DotNetBooks.xml to reconstruct the XPathDocument.
    xmldoc = New System.Xml.XPath.XPathDocument("c:\DotNetBooks.xml")
    
    'Create the XPathNavigator.
    nav = xmldoc.CreateNavigator()
    
    'Reuse the XPathExpression that you compiled previously to locate
    'all MSPress titles in DotNetBooks.xml.
    
    'You can reuse the XPathExpression because the hierarchy of elements that are referenced
    'in the XPath query is the same in Books.xml and DotNetBooks.xml. 
    'For example, the Publisher element is a child of the Title element in both XML documents.
    'The hierarchy must be identical for you to reuse the same XPathExpression object
    'across different XML documents/streams.
    
    'When you use an XPathExpression object, and the Select method executes,
    'the XPath query is not recompiled. 
    
    iterator = nav.Select(expr)
    
    'Use the iterator to navigate the generated resultset.
    Do While iterator.MoveNext
         System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    					
  6. Leggere i commenti inline per comprendere le funzionalità del codice. Prestare attenzione specifico a come il codice di esempio crea un'istanza dell'oggetto di XPathExpression la prima volta (contro Books.XML) e quindi riutilizza l'oggetto quando la query XPath viene eseguita la seconda volta (contro DotNetBooks.xml).

Il progetto di prova

  1. Salvare le modifiche al progetto di Visual Basic .NET e quindi eseguire il progetto.
  2. Quando viene visualizzato il form, fare clic sul primo pulsante comando per eseguire il codice che utilizza una stringa per specificare l'espressione di query XPath. L'output della query XPath specificata con Books.XML viene visualizzato come segue:
    XML Step by Step
    Developing XML solutions
    					
  3. Fare clic sul secondo pulsante di comando per eseguire il codice che utilizza un oggetto XPathExpression per specificare l'espressione di query XPath. L'output della query XPath specificata da Books.XML e DotNetBooks.xml viene visualizzato come segue:
    MSPress titles in books.xml...
    ******************************
    XML Step by Step
    Developing XML solutions
    
    MSPress titles in DotNetBooks.xml...
    ******************************
    ADO.Net Core Reference
    Inside C#
    					

Proprietà

Identificativo articolo: 317069 - Ultima modifica: venerdì 12 agosto 2005 - Revisione: 4.2
Le informazioni in questo articolo si applicano a:
  • Microsoft .NET Framework 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.0
Chiavi: 
kbmt kbhowtomaster KB317069 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 317069
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