Cum să citiți XML dintr-un fișier folosind Visual C#

Traduceri articole Traduceri articole
ID articol: 307548 - View products that this article applies to.
Măriți totul | Reduceți totul

În această pagină

Rezumat

Acest articol descrie modul de utilizare a XmlTextReader clasa pentru a citi limbajul extensibil de marcare (XML) dintr-un fișier. XmlTextReader oferă direct parsarea și tokenizing XML și pune în aplicare XML 1.0 caietul de sarcini, precum și spații de nume în caietul de sarcini XML la World Wide Web Consortium (W3C). Acest articol oferă acces rapid, tokenized flux XML, mai degrabă decât folosind un model obiect cum ar fi XML Document Object Model (DOM).

Cerințele

Listă tabel următoare evidențiază hardware recomandate, software-ul, infrastructura de rețea și pachete de service care aveți nevoie:
  • Microsoft Visual Studio 2005 sau Microsoft Visual Studio .NET
Acest articol presupune că sunteți familiarizați cu următoarele subiecte:
  • Terminologia XML
  • Crearea și un fișier XML de lectură

Cum să citiți XML dintr-un fișier

Acest exemplu utilizează un fișier numit Books.xml. Creați fișierul de Books.xml sau utiliza?i fi?ierul e?antion care este inclusă în QuickStarts .NET Software Development Kit (SDK) în următorul folder:
\Program Files\Microsoft visual Studio .NET\FrameworkSDK\Samples\QuickStart\Howto\Samples\Xml\Transformxml\Cs
Trebuie să copiați Books.xml la folderul \Bin\Debug, care se află sub folderul în care creați acest proiect. Books.XML este, de asemenea, disponibil pentru download. A se vedea "Referin?e"secțiunea pentru locația de descărcare.
  1. Începe Visual Studio 2005 sau Visual Studio .NET.
  2. Creați un nou Visual C# consola cerere. Proceda direct la "Completați codul de listare"secțiunea sau continua prin acești pași pentru a construi cererii.
  3. Asigurați-vă că proiectul conține o referință la asamblarea System.Xml.dll .
  4. Specificați folosind Directiva pe spa?iul de nume System.Xml astfel încât nu sunt necesare pentru a se califica declarațiile XmlTextReader mai târziu în codul. Trebuie să utilizați folosind Directiva înainte de orice alte declarații.
    using System.Xml;
    					
  5. Creează o instanță a unui obiect de XmlTextReader , și se populează cu fi?ierul XML. De obicei, clasa XmlTextReader este utilizat în cazul în care aveți nevoie pentru a accesa XML ca date brute fără aeriene de un DOM; astfel, clasa XmlTextReader oferă un mecanism rapid de lectură XML. XmlTextReader clasa a constructorilor diferite pentru a specifica locația datele XML. Următorul cod creează o instanță a clasei XmlTextReader și încarcă fișierul Books.xml. Adăugați următorul cod la procedura principală de Class1.
    XmlTextReader reader = new XmlTextReader ("books.xml");
    					
  6. Citi prin intermediul XML. (Rețineți că acest pas demonstrează un exterior "în marcă de timp ce" buclă, și următorii doi pa?i demonstra modul de utilizare că bucla să citească XML.) După crearea obiectului XmlTextReader , utilizați metoda de citire pentru a citi datele XML. Metoda Read Urmărire să se deplaseze prin fișierul XML secvențial până când ajunge la sfârșitul fișierului, la care punctul citi metoda întoarce valoarea "False."
    while (reader.Read()) 
    {
        // Do some work here on the data.
    	Console.WriteLine(reader.Name);
    }
    Console.ReadLine();
    					
  7. Inspectați noduri. Pentru a procesa datele XML, fiecare înregistrare are un tip de nodul care poate fi determinată de proprietate NodeType . Proprietăți nume de sign-in și valoarea reveni node nume (nume element si atribut) și valoarea de nod (nod text) de nodul curent (sau înregistrare). Enumerare NodeType determină tipul de nod. Următoarele exemple de cod afișează nume de sign-in elementelor și tip de document. Rețineți că acest eșantion ignoră elementul atribute.
    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. Inspectați atributele. Tipuri de nod elemente pot include o listă de noduri de atribut care sunt asociate cu acestea. Metoda MovetoNextAttribute se mută secvențial prin fiecare atribut în elementul. Utilizați proprietatea HasAttributes pentru a testa dacă nodul are orice atribute. Proprietatea AttributeCount întoarce numărul de atribute pentru nodul curent.
    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. Salvați și închideți proiectul dumneavoastră.

Completați codul de listare

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();
        }
    }
}
				

Mostră de ieșire

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

Rezolvarea problemelor

Când test cod, este posibil să primiți următorul mesaj de eroare de excepție: excep?ie netratată: System.Xml.XmlException: declara?ie XML nea?teptat. Declaratia XML trebuie să fie primul nod în document, și nici un spațiu alb de caractere sunt permise să apară înainte de a fi.

Informații suplimentare: eroare de sistem. De eroare de excepție apare pe următoarea linia Către de cod: în marcă de timp ce
(reader.Read())
De eroare de excepție este cauzată de o instruc?iune de procesare nevalidă. De exemplu, instrucțiune de prelucrare pot conține spații străine. Următorul este un exemplu de o instruc?iune de procesare nevalid:
<?xml version='1.0' ?>
Această etichetă xml are un spațiu precedent "<’ bracket.="" remove="" the="" preceding="" whitespace="" to="" resolve="" the="" error.=""></’>

REFERIN?E

Fișierul următor este disponibil pentru descărcare de la Microsoft Download Center:
Reduceți imagineaMăriți imaginea
Download
Descărcați acum pachetul Books.exe.
Pentru mai multe informații despre clase .NET Framework XML și C#, vizitați următorul site Web Rețea Microsoft pentru dezvoltatori (MSDN):
http://msdn.Microsoft.com/en-US/Magazine/cc302158.aspx
Pentru mai multe informații despre clasa XmlReader , vizitați următorul site MSDN Web:
http://msdn2.Microsoft.com/en-us/library/System.xml.XMLReader (vs.71) .aspx
Pentru mai multe informații despre utilizarea XmlReader pentru a citi date XML, vizitați următorul site MSDN Web:
http://msdn2.Microsoft.com/en-us/library/aa720470 (VS.71) .aspx

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

Proprietă?i

ID articol: 307548 - Ultima examinare: 15 noiembrie 2012 - Revizie: 1.0
Se aplică la:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
Cuvinte cheie: 
kbdownload kbhowtomaster kbmt KB307548 KbMtro
Traducere automată
IMPORTANT: Acest articol a fost tradus de software-ul de traducere automată Microsoft, si nu de un traducător. Microsoft vă oferă atât articole traduse de persoane, cât și articole traduse automat, astfel incat aveti access la toate articolele din Baza noastră de informatii în limba dvs. materna. Totuși, un articol tradus automat nu este întotdeauna perfect. Acesta poate conține greșeli de vocabular, sintaxă sau gramatică, la fel cum un vorbitor străin poate face greșeli vorbind limba dvs. materna. Compania Microsoft nu este responsabilă pentru nici o inexactitate, eroare sau daună cauzată de traducerea necorespunzătoare a conținutului sau de utilizarea traducerii necorespunzătoare de către clienții nostri. De asemenea, Microsoft actualizează frecvent software-ul de traducere automată.
Face?i clic aici pentru a vizualiza versiunea în limba engleză a acestui articol: 307548

Trimite?i feedback

 

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