Dieser Artikel beschreibt, wie mithilfe die
XmlTextReader -Klasse (XML = Extensible Markup Language) aus einer Datei gelesen wird.
XmlTextReader bietet direkte Analyse und Tokenerstellung für XML und implementiert die XML 1.0-Spezifikation sowie die Namespaces in der XML-Spezifikation aus dem World Wide Web Consortium (W3C). Dieser Artikel bietet schnellen, tokenaktivierten Streamzugriff auf XML, anstatt ein Objektmodell wie das Model (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 den 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 verwenden Sie die Beispieldatei, 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, die unter dem Ordner befindet, in dem Sie dieses Projekt erstellen. "Books.xml" wird auch zum Download zur Verfügung. Finden Sie auf der "
Informationsquellen"die Downloadadresse für Abschnitt.
- Starten Sie Visual Studio 2005 oder Visual Studio .NET.
- Erstellen Sie eine neue Visual C# -[NULL] Konsolenanwendung. Fahren Sie direkt zu den "Vollständige Codeauflistung"fortfahren Sie oder durch diese Schritte zum Erstellen der Anwendung.
- Stellen Sie sicher, dass das Projekt einen Verweis auf die Assemblierung System.Xml.dll enthält.
- Geben Sie die using -Direktive für den System.Xml -Namespace, damit Sie nicht erforderlich sind, XmlTextReader -Deklarationen später im Code vornehmen müssen. Sie müssen die using -Direktive vor allen anderen Deklarationen verwenden.
- Erstellen Sie eine Instanz der XmlTextReader -Objekt, und füllen Sie es mit der XML-Datei. Die XmlTextReader -Klasse wird in der Regel verwendet, wenn Sie die XML-Daten als unformatierte Daten ohne den Overhead von DOM zugreifen möchten; Daher bietet die Klasse XmlTextReader einen schnelleren Mechanismus zum Lesen von XML. Die XmlTextReader -Klasse verfügt über verschiedene Konstruktoren, 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.
XmlTextReader reader = new XmlTextReader ("books.xml");
- Lesen Sie die XML-Daten. (Beachten Sie, dass dieser Schritt eine äußere "while"-Schleife zeigt und die nächsten beiden Schritte veranschaulichen die Verwendung dieser Schleife verwenden, um das XML lesen.) Nachdem Sie das XmlTextReader -Objekt erstellen, verwenden Sie die Read -Methode 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();
- Untersuchen Sie die Knoten. Zum Verarbeiten der XML-Daten besitzt jeder Datensatz einen Knotentyp, der aus der NodeType -Eigenschaft ermittelt werden kann. Die Eigenschaften Name und Value geben den Knotennamen (die Element- und Attributnamen Namen) 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 ein. 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;
}
}
- Untersuchen Sie die Attribute. Elementknotentypen können eine Liste von Attributknoten enthalten, die ihnen zugeordnet sind. MovetoNextAttribute -Methode durchläuft jedes Attribut im Element sequenziell aus. Verwenden Sie die HasAttributes -Eigenschaft, um zu testen, ob der Knoten über Attribute verfügt. Die Eigenschaft AttributeCount 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;
}
}
- 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();
}
}
}
Beispielausgabe
<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 zu testen, können Sie folgende Ausnahmefehlermeldung erhalten: unbehandelte Ausnahme: System.Xml.XmlException: unerwartetes XML-Deklaration. Die XML-Deklaration muss der erste Knoten im Dokument sein und dürfen keine Leerzeichen davor angezeigt werden.
Weitere Informationen: Systemfehler.
Der Ausnahmefehler tritt auf, auf die folgende Codezeile: während
Die Ausnahme wird durch eine ungültige Verarbeitungsanweisung verursacht. Die Anweisung kann z. B. überflüssige Leerzeichen enthalten. Es folgt ein Beispiel für eine ungültige Verarbeitungsanweisung:
Dieses XML-Tag enthält ein Leerzeichen vorhergehenden der '<? bracket.="" remove="" the="" preceding="" whitespace="" to="" resolve="" the="" error.=""></?>
Informationsquellen
Die folgende Datei steht im Microsoft Download Center als Download zur Verfügung:
Weitere Informationen zu.NET Framework XML Classes and C# finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Website:
Weitere Informationen über die
XmlReader -Klasse finden Sie auf den folgenden MSDN-Website:
Weitere Informationen zur Verwendung von
XmlReader zum Lesen von XML-Daten finden Sie auf der folgenden MSDN-Websites:
Artikel-ID: 307548 - Geändert am: Sonntag, 21. April 2013 - Version: 3.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
| kbdownload kbhowtomaster kbmt KB307548 KbMtde |
Maschinell übersetzter ArtikelWichtig: 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
(http://support.microsoft.com/kb/307548/en-us/
)
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.