Come leggere XML da un file utilizzando Visual C#

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

In questa pagina

Sommario

In questo articolo viene descritto come utilizzare la classe XmlTextReader per leggere un file Extensible Markup Language (XML). XmlTextReader fornisce un'analisi diretta e token di XML e implementa XML 1.0 specification, nonché gli spazi dei nomi nella specifica XML dal World Wide Web Consortium (W3C). In questo articolo fornisce l'accesso di flusso veloce, in formato token XML anziché utilizzando un modello a oggetti, ad esempio l'oggetto modello DOM (Document XML).

Requisiti

Nell'elenco riportato di seguito vengono indicati hardware consigliati, software, infrastruttura di rete i service pack necessari:
  • Microsoft Visual Studio 2005 o Microsoft Visual Studio .NET
In questo articolo si presuppone che abbiate conoscenza dei seguenti argomenti:
  • Terminologia XML
  • Creazione e lettura di un file XML

Come leggere XML da un file

In questo esempio viene utilizzato un file denominato Books. Xml. È possibile creare un file books. XML o utilizzare il file di esempio è incluso in .NET Software Development Kit (SDK) QuickStarts nella seguente cartella:
\Programmi\Microsoft visual Studio .NET\FrameworkSDK\Samples\QuickStart\Howto\Samples\Xml\Transformxml\Cs
È necessario copiare il file books. XML nella cartella \Bin\Debug, che si trova sotto la cartella in cui è stato creato questo progetto. Books. XML è inoltre disponibile per il download. Vedere per il "Riferimenti"sezione posizioni per il download.
  1. Avviare Visual Studio 2005 o Visual Studio .NET.
  2. Creare una nuova applicazione Console in Visual C#. Passare direttamente al "Elenco completo del codice"o continuare con la procedura per generare l'applicazione.
  3. Assicurarsi che il progetto contenga un riferimento all'assembly System.Xml.dll
  4. Specificare la direttiva using allo spazio dei nomi System. XML in modo che non sia necessario qualificare le dichiarazioni di XmlTextReader nel codice. È necessario utilizzare la direttiva using prima di qualunque altra dichiarazione.
    using System.Xml;
    					
  5. Creare un'istanza di un oggetto XmlTextReader e inserirvi il file XML. In genere, viene utilizzata la classe XmlTextReader se è necessario accedere al codice XML come dati non elaborati senza il sovraccarico DOM; In questo modo, la classe XmlTextReader fornisce un meccanismo più rapido per la lettura di XML. La classe XmlTextReader dispone di costruttori diversi per specificare la posizione dei dati XML. Il codice riportato di seguito viene creata un'istanza della classe XmlTextReader e carica il file books. Xml. Aggiungere il seguente codice alla routine Main di Class1.
    XmlTextReader reader = new XmlTextReader ("books.xml");
    					
  6. Leggere il codice XML. Si noti che questa fase viene dimostrato un "loop while" esterno e i due passaggi successivi viene illustrato come utilizzare questo loop per leggere il file XML. Dopo aver creato l'oggetto XmlTextReader , utilizzare il metodo Read per leggere i dati XML. Il metodo Read continua a spostarsi all'interno del file XML in sequenza fino a quando non viene raggiunta la fine del file, in cui scegliere il metodo di lettura restituisce il valore "False".
    while (reader.Read()) 
    {
        // Do some work here on the data.
    	Console.WriteLine(reader.Name);
    }
    Console.ReadLine();
    					
  7. Controllare i nodi. Per elaborare i dati XML, ogni record dispone di un tipo di nodo che può essere determinato dalla proprietà NodeType . Le proprietà Name e Value restituiscono il nome (il nome dell'elemento e dell'attributo) e il valore del nodo (testo del nodo) o record corrente L'enumerazione NodeType determina il tipo di nodo. Il codice di esempio riportato di seguito visualizza il nome degli elementi e il tipo di documento. Si noti che in questo esempio vengono ignorati gli attributi dell'elemento.
    while (reader.Read()) 
    {
        switch (reader.NodeType) 
        {
            case XmlNodeType.Element: // The node is an element.
                Console.Write("<" + reader.Name);
       Console.WriteLine(">");
                break;
      case XmlNodeType.Text: //Display the text in each element.
                Console.WriteLine (reader.Value);
                break;
      case XmlNodeType. EndElement: //Display the end of the element.
                Console.Write("</" + reader.Name);
       Console.WriteLine(">");
                break;
        }
    }
    					
  8. Controllare gli attributi. Tipi di nodi elemento possono includere un elenco di nodi di attributo sono associate. Il metodo MovetoNextAttribute lo spostamento sequenziale da un attributo nell'elemento. Utilizzare la proprietà HasAttributes per verificare se il nodo possiede attributi. La proprietà AttributeCount restituisce il numero di attributi del nodo corrente.
    while (reader.Read()) 
    {
           switch (reader.NodeType) 
           {
               case XmlNodeType.Element: // The node is an element.
                   Console.Write("<" + reader.Name);
    
                   while (reader.MoveToNextAttribute()) // Read the attributes.
                       Console.Write(" " + reader.Name + "='" + reader.Value + "'");
          Console.WriteLine(">");
                   break;
         case XmlNodeType.Text: //Display the text in each element.
                   Console.WriteLine (reader.Value);
                   break;
         case XmlNodeType. EndElement: //Display the end of the element.
                   Console.Write("</" + reader.Name);
          Console.WriteLine(">");
                   break;
           }
       }
    					
  9. Salvare e chiudere il progetto.

Elenco completo del codice

using System;
using System.Xml;

namespace ReadXMLfromFile
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Class1
    {
        static void Main(string[] args)
        {
            XmlTextReader reader = new XmlTextReader ("books.xml");
            while (reader.Read()) 
            {
                switch (reader.NodeType) 
                {
                    case XmlNodeType.Element: // The node is an element.
                        Console.Write("<" + reader.Name);
                        Console.WriteLine(">");
                        break;
                    case XmlNodeType.Text: //Display the text in each element.
                        Console.WriteLine (reader.Value);
                        break;
                    case XmlNodeType.EndElement: //Display the end of the element.
                        Console.Write("</" + reader.Name);
                        Console.WriteLine(">");
                        break;
                }
            }
            Console.ReadLine();
        }
    }
}
				

Esempio di output

<bookstore>
<book>
<title>
The Autobiography of Benjamin Franklin
</title>
<author>
<first-name>
Benjamin
</first-name>
<last-name>
Franklin
</last-name>
</author>
<price>
8.99
</price>
</book>
<book>
<title>
The Confidence Man
</title>
<author>
<first-name>
Herman
</first-name>
<last-name>
Melville
</last-name>
</author>
<price>
11.99
</price>
</book>
<book>
<title>
The Gorgias
</title>
<author>
<name>
Plato
</name>
</author>
<price>
9.99
</price>
</book>
</bookstore>
				

Risoluzione dei problemi

Quando si testa il codice, è possibile che venga visualizzato il seguente messaggio di errore di eccezione: eccezione non gestita: System.Xml.XmlException: dichiarazione XML imprevista. La dichiarazione XML deve essere il primo nodo del documento e non gli spazi vuoti sono consentiti caratteri a comparire.

Informazioni aggiuntive: errore di sistema. Questo errore si verifica nella seguente riga di codice: While
(reader.Read())
Questo errore è causato da un'istruzione di elaborazione non valida. Ad esempio, l'istruzione di elaborazione può contenere spazi estranei. Di seguito è riportato un esempio di un'istruzione di elaborazione non valida:
<?xml version='1.0' ?>
Questo tag xml include uno spazio precedente il '<? bracket.="" remove="" the="" preceding="" whitespace="" to="" resolve="" the=""></?>

RIFERIMENTI

Il seguente file è disponibile per il download dall'area Download Microsoft:
Riduci l'immagineEspandi l'immagine
Download
Download del pacchetto Books.exe.
Per ulteriori informazioni sulle classi XML di.NET Framework e C#, visitare il seguente sito Web Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/en-us/magazine/cc302158.aspx
Per ulteriori informazioni sulla classe XmlReader , visitare il seguente sito Web MSDN:
http://msdn2.microsoft.com/en-us/library/System.Xml.XmlReader (vs.71).aspx
Per ulteriori informazioni su come utilizzare XmlReader per leggere dati XML, visitare i seguenti siti Web MSDN:
http://msdn2.microsoft.com/en-us/library/aa720470 (VS.71).aspx

http://msdn2.microsoft.com/en-us/library/tfz3cz6w (vs.71).aspx

Proprietà

Identificativo articolo: 307548 - Ultima modifica: lunedì 3 marzo 2014 - Revisione: 8.0
Le informazioni in questo articolo si applicano a:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
Chiavi: 
kbdownload kbhowtomaster kbmt KB307548 KbMtit
Traduzione automatica articoli
IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l?obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 307548
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