Gewusst wie: Lesen von XML aus einer Datei mithilfe von Visual C#

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 307548 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel beschreibt, wie mithilfe der XmlTextReader-Klasse XML (Extensible Markup Language) aus einer Datei gelesen wird. XmlTextReader bietet direkte Analysefunktionen und Tokenerstellung für XML und implementiert die XML 1.0-Spezifikation sowie die Namespaces der XML-Spezifikation aus dem World Wide Web Consortium (W3C). Dieser Artikel bietet schnellen, tokenorientierten Streamzugriff auf XML statt der Verwendung eines Objektmodells wie das XML-Dokumentobjektmodell (DOM).

Anforderungen

Die folgende Liste führt die empfohlene Hardware, Software, Netzwerkinfrastruktur und Servicepacks, die Sie benötigen auf:
  • Microsoft Visual Studio 2005 oder Microsoft Visual Studio .NET
In diesem Artikel wird davon ausgegangen, dass Sie mit folgenden Themen vertraut sind:
  • XML-Terminologie
  • Erstellen und Lesen einer XML-Datei

Gewusst wie: Lesen von XML aus einer Datei

Dieses Beispiel verwendet eine Datei namens "Books.xml". Sie können eine eigene Datei Books.xml erstellen oder die Beispieldatei verwenden, die im .NET Software Development Kit (SDK) QuickStarts in folgendem Ordner enthalten ist:
\Programme\Microsoft Visual Studio .NET\FrameworkSDK\Samples\QuickStart\Howto\Samples\Xml\Transformxml\Cs
Sie müssen "Books.xml" in den Ordner \Bin\Debug kopieren, der sich unter dem Ordner befindet, in dem Sie dieses Projekt erstellen. "Books.xml" steht auch als Download zur Verfügung. Finden Sie unter den "Informationsquellen"die Downloadadresse für Abschnitt.
  1. Starten Sie Visual Studio 2005 oder Visual Studio .NET.
  2. Erstellen Sie eine neue Visual C# -[NULL] Konsolenanwendung. Gehen Sie direkt zu den "Vollständige Codeauflistung"fortfahren Sie oder die folgenden Schritte zum Erstellen der Anwendung.
  3. Stellen Sie sicher, dass das Projekt einen Verweis auf die Assembly System.Xml.dll enthält.
  4. Geben Sie die Anweisung using für den Namespace System.Xml an, damit Sie später im Code die XmlTextReader-Deklarationen nicht mit Namespace angeben müssen. Sie müssen die using -Direktive vor allen anderen Deklarationen verwenden.
    using System.Xml;
    					
  5. Erstellen Sie eine Instanz eines XmlTextReader-Objekts, und füllen Sie dieses dann mit der XML-Datei auf. Normalerweise wird die Klasse XmlTextReader verwendet, wenn Sie auf die XML-Daten als unformatierte Daten ohne den Overhead von DOM zugreifen möchten; die XmlTextReader -Klasse bietet somit einen schnelleren Mechanismus zum Lesen von XML. Die XmlTextReader -Klasse verfügt über verschiedene Konstruktoren, um den Speicherort der XML-Daten anzugeben. Der folgende Code erstellt eine Instanz der XmlTextReader -Klasse und lädt die Datei "Books.xml". Fügen Sie den folgenden Code der Prozedur Main von Class1 hinzu.
    XmlTextReader reader = new XmlTextReader ("books.xml");
    					
  6. Die XML-Daten lesen. (Beachten Sie, dass dieser Schritt eine äußere "while"-Schleife zeigt und dass die nächsten beiden Schritte die Verwendung dieser Schleife zum Lesen von XML veranschaulichen.) Nachdem Sie das Objekt XmlTextReader erstellt haben, verwenden Sie die Methode Read zum Lesen der XML-Daten. Die Read-Methode durchläuft weiterhin sequenziell die XML-Datei, bis das Ende der Datei erreicht wird und die Rückgabe der Methode Read() den Wert "False" zurückgibt.
    while (reader.Read()) 
    {
        // Do some work here on the data.
    	Console.WriteLine(reader.Name);
    }
    Console.ReadLine();
    					
  7. Untersuchen Sie die Knoten. Zum Verarbeiten der XML-Daten besitzt jeder Datensatz einen Knotentyp, der anhand der Eigenschaft NodeType ermittelt werden kann. Die Eigenschaften Name und Value geben den Knotennamen (die Element- und Attributnamen) und den Knotenwert (den Knotentext) des aktuellen Knotens (oder Datensatzes) zurück. Die Aufzählung NodeType bestimmt den Knotentyp. Der folgende Beispielcode zeigt den Namen der Elemente und den Dokumenttyp an. Beachten Sie, dass dieses Beispiel Elementattribute ignoriert.
    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. Untersuchen Sie die Attribute. Elementknotentypen können eine Liste von Attributknoten enthalten, die ihnen zugeordnet sind. Die Methode MovetoNextAttribute durchläuft jedes Attribut im Element sequenziell. Verwenden Sie die HasAttributes -Eigenschaft überprüft, ob der Knoten über Attribute verfügt. AttributeCount -Eigenschaft gibt die Anzahl der Attribute für den aktuellen Knoten zurück.
    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. Speichern Sie und schließen Sie das Projekt.

Vollständige Codeauflistung

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

Beispiel für die Ausgabe

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

Problembehandlung

Wenn Sie den Code testen, können Sie folgende Ausnahmefehlermeldung erhalten: unbehandelte Ausnahme: System.Xml.XmlException: unerwartete XML-Deklaration. Die XML-Deklaration muss der erste Knoten im Dokument sein, und davor dürfen keine Leerzeichen stehen.

Zusätzliche Informationen: Systemfehler. Der Ausnahmefehler tritt auf bei der folgenden Codezeile: While
(reader.Read())
Die Ausnahme wird durch eine ungültige Verarbeitungsanweisung verursacht. Beispielsweise kann die Verarbeitungsanweisung überflüssige Leerzeichen enthalten. Es folgt ein Beispiel für eine ungültige Verarbeitungsanweisung:
<?xml version='1.0' ?>
Dieses XML-Tag ein Leerzeichen vorangehenden hat die '<? bracket.="" remove="" the="" preceding="" whitespace="" to="" resolve="" the=""></?>

Informationsquellen

Die folgende Datei steht im Microsoft Download Center als Download zur Verfügung:
Bild minimierenBild vergrößern
Herunterladen
Paket Books.exe jetzt herunterladen
Weitere Informationen zu.NET Framework XML Classes und C# finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Website:
http://msdn.Microsoft.com/en-US/Magazine/cc302158.aspx
Weitere Informationen über die XmlReader -Klasse finden Sie auf der folgenden MSDN-Website:
http://msdn2.Microsoft.com/en-us/library/System.Xml.XmlReader (VS
Weitere Informationen zur Verwendung von XmlReader zum Lesen von XML-Daten finden Sie auf den folgenden MSDN-Websites:
http://msdn2.Microsoft.com/en-us/library/aa720470 (VS

http://msdn2.Microsoft.com/en-us/library/tfz3cz6w (VS

Eigenschaften

Artikel-ID: 307548 - Geändert am: Montag, 3. März 2014 - Version: 8.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
Keywords: 
kbdownload kbhowtomaster kbmt KB307548 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 307548
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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