Wie Sie die XML-Daten aus einer Datei gelesen, mit Visual C++

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: 815658
Eine Microsoft Visual C# .NET Version dieses Artikels finden Sie unter 307548.

Eine Microsoft Visual Basic .NET Version dieses Artikels finden Sie unter 301225.

Dieser Artikel bezieht sich auf den folgenden Namespace für Microsoft.NET Framework-Klassenbibliothek:

System.Xml

IN DIESER AUFGABE

Zusammenfassung
Dieser Artikel beschreibt, wie die XmlTextReader -Klasse verwenden, um die XML-Daten aus einer Datei gelesen. Die XmlTextReader -Klasse bietet direkte Analyse und Tokenerstellung für XML-Daten. Die XmlTextReader -Klasse implementiert auch die XML 1.0-Spezifikation, zusätzlich zu den Namespaces in der XML-Spezifikation, die vom World Wide Web Consortium (W3C) definiert ist. Dieser Artikel beschreibt, wie Sie schnelle, zerlegt Streamzugriff auf XML-Daten, anstatt ein Objektmodell wie z. B. das Model (DOM).

zurück zum Anfang

Anforderungen

In diesem Artikel wird davon ausgegangen, dass Sie mit folgenden Themen vertraut sind:
  • XML-Terminologie
  • Erstellen und lesen eine XML-Datei

Die folgende Liste enthält die empfohlene Hardware, Software, Netzwerkinfrastruktur und Servicepacks, die Sie benötigen:
  • Microsoft Visual Studio .NET
  • Microsoft Visual Studio 2005
zurück zum Anfang

Lesen Sie die XML-Daten aus einer Datei.

Im Beispiel in diesem Artikel wird eine Datei namens "Books.xml". Sie können eine eigene Datei Books.xml erstellen, oder können Sie die Beispieldatei, die mit der Microsoft .NET Software Development Kit (SDK) QuickStarts enthalten ist. Die Datei Books.xml steht zum Download im Microsoft Download Center zur Verfügung:Sie müssen die Datei Books.xml in den Projektordner kopieren.

Gehen Sie folgendermaßen vor, um die XML-Daten aus einer Datei zu lesen:
  1. Starten Sie Visual Studio .NET 2002, Visual Studio. NET2003 oder Visual Studio 2005.
  2. Klicken Sie im Menü Datei aufneuund klicken Sie dann auf Projekt.

    Das DialogfeldNeues Projekt wird angezeigt.
  3. Klicken Sie unter Projekttypenauf Für VisualC++-Projekte.

    Hinweis In Visual Studio 2005 wird Für VisualC++-Projekte in Visual C++geändert.
  4. Klicken Sie unter VorlagenaufVerwaltete C++-Anwendung , bei Verwendung von Visual Studio. NET2002.

    Klicken Sie unter Vorlagenauf ConsoleApplication (.NET) , bei Verwendung von Visual Studio .NET 2003.

    Klicken Sie unter Vorlagenauf CLR ConsoleApplication<b00> </b00> bei Verwendung von Visual Studio 2005.
  5. Geben Sie im Feld NameQ815658, und klicken Sie dann auf OK.
  6. Fügen Sie einen Verweis zur Datei System.Xml.dll hinzu, an dem Projekt.Weitere Informationen über das Hinzufügen von Verweisen zu einem verwalteten Visual C++-Projekt klicken Sie auf die folgende Artikelnummer, um den Artikel der Microsoft Knowledge Base anzuzeigen:
    310674 Vorgehensweise: Hinzufügen von Verweisen zu einem verwalteten Visual C++-Projekt
  7. Geben Sie mithilfe der Richtlinie im XML-Namespace wie folgt:
    using namespace System::Xml;
    Sie tun dies, so dass Sie nicht die XmlTextReader -Klassendeklarationen später in Ihrem Code vornehmen müssen. Verwenden Sie die mittels-Direktive vor allen anderen Deklarationen.
  8. Erstellen Sie eine Instanz der XmlTextReader -Objekt. Füllen Sie das XmlTextReader -Objekt mit der XML-Datei.

    In der Regel die XmlTextReader -Klasse verwendet wird, haben Sie Zugriff auf die unformatierten XML-Daten ohne Theoverhead des DOM. Aus diesem Grund bietet die XmlTextReader -Klasse eine schnellere Methode zum Lesen der XML-Daten. Die XmlTextReader -Klasse verfügt über verschiedene Konstruktoren, die den Speicherort der XML-Daten angeben.

    Der folgende Code erstellt eine Instanz der XmlTextReader -Klasse und lädt dann die Datei "Books.xml". Die Funktion _tmain folgende Code hinzugefügt:
    XmlTextReader* reader = new XmlTextReader ("books.xml");
    Hinweis In Visual C++ 2005 wird die Funktion _tmain in der main -Funktion geändert werden.
  9. Die XML-Daten lesen.

    Hinweis Dieser Schritt veranschaulicht eine äußere während der Schleife. Gehen Sie die zwei Stepsthat veranschaulichen die while -Schleife zum Lesen der XML-Daten verwenden.

    Verwenden Sie nach Youcreate das XmlTextReader -Objekt die Read -Methode zum Lesen der XML-Daten.

    Die Read -Methode weiter, um nacheinander mithilfe der XML-Datei biszumzeitpunktder Read -Methode erreicht das Ende der Datei. Wenn die Read -Methode das Ende der Datei erreicht, gibt die Read -Methode falsezurück.
    while (reader->Read()){	// Do some work here on the data.	Console::WriteLine(reader->Name);}
  10. Untersuchen Sie die Knoten.

    Um die XML-Daten zu verarbeiten, hat Eachrecord einen Knotentyp, der anhand der Eigenschaft NodeType ermittelt werden kann. Die Name -Eigenschaft und die Value -Eigenschaft geben Sie die folgende Informationen für den aktuellen Knoten alle aktuellen Datensatz zurück:
    • Der Knotenname, der Name des Elements und der Attributname ist.
    • Der Wert des Knotens, der den Text des Knotens ist.
    Die Aufzählung NodeType bestimmt den Knotentyp. Die folgende Codesample zeigt die Namen der Elemente und den Dokumenttyp an. Das Followingcode Beispiel ignoriert Elementattribute:
    while (reader->Read()){	switch (reader->NodeType)	{	case XmlNodeType::Element: // The node is an element.		Console::Write("<{0}", 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("</{0}", reader->Name);		Console::WriteLine(">");		break;	}}
  11. Untersuchen Sie die Attribute.

    Element-Knoten Typen Caninclude eine Liste der Attribute-Knoten, die die Nodetypes Element zugeordnet sind. Die MovetoNextAttribute -Methode durchläuft nacheinander jedes Attribut im Element. 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("<{0}", reader->Name);					while (reader->MoveToNextAttribute()) // Read the attributes.			Console::Write(" {0}='{1}'", 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("</{0}", reader->Name);		Console::WriteLine(">");		break;	}}
  12. Speichern Sie die Projektmappe. Erstellen Sie die Projektmappe.
  13. Drücken Sie STRG + F5, um die Beispielanwendung ausführen.
zurück zum Anfang

Zeigen Sie den vollständigen Code in Visual Studio .NET 2002 oder Visual Studio an. NET2003

#include "stdafx.h"#include <tchar.h>#using <mscorlib.dll>#using <System.xml.dll>	using namespace System;using namespace System::Xml;	void _tmain(void){    XmlTextReader* reader = new XmlTextReader ("books.xml");    while (reader->Read())     {        switch (reader->NodeType)         {			case XmlNodeType::Element: // The node is an element.				Console::Write("<{0}", reader->Name);                while (reader->MoveToNextAttribute()) // Read the attributes.					Console::Write(" {0}='{1}'", 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("</{0}", reader->Name);				Console::WriteLine(">");                break;        }    }    Console::ReadLine();}
Hinweis Sie müssen die Compileroption "common Language Runtime-Unterstützung" hinzufügen (/ CLR: oldSyntax) in Visual C++ 2005 um den vorhergehenden Beispielcode kompilieren. Um die Compileroption "common Language Runtime-Unterstützung" in Visual C++ 2005 hinzuzufügen, gehen Sie folgendermaßen vor:
  1. Klicken Sie auf Projekt, und klicken Sie dann auf<ProjectName></ProjectName> Eigenschaften.

    Hinweis<ProjectName></ProjectName> ist ein Platzhalter für den Namen des Projekts.
  2. Erweitern Sie Konfigurationseigenschaften, und klicken Sie dann auf Allgemein.
  3. Klicken Sie auf Common Language Runtime Support, Old Syntax (/ CLR: oldSyntax) in der Common Language Runtime unterstützen Projekteinstellung im rechten Bereich klicken Sie auf Übernehmen, und klicken Sie dann auf OK.
Weitere Informationen über die common Language Runtime unterstützen Sie (Compileroption), finden Sie auf der folgenden Microsoft-Website:
/ CLR (common Language Runtime Compilation)
http://msdn2.Microsoft.com/en-us/library/k8d11d4s.aspx
Diese Schritte gelten für den gesamten Artikel.

zurück zum Anfang

Die Beispielausgabe anzeigen

Hinweis Die Datei "Books.xml", die in den Schnellstarts des .NET SDK enthalten ist hat zwei Unterschiede zur Datei Books.xml aus dem Download-Link, der im Abschnitt "Die XML-Daten aus einer Datei lesen" genannt wird.
  • Die Datei Books.xml vom Downloadlink muss nicht dasVeröffentlichungsdatum -Attribut.
  • Die Datei Books.xml vom Downloadlink keineISBN -Attributs.
<bookstore><book genre='autobiography' publicationdate='1981' ISBN='1-861003-11-0'><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 genre='novel' publicationdate='1967' ISBN='0-201-63361-2'><title>The Confidence Man</title><author><first-name>Herman</first-name><last-name>Melville</last-name></author><price>11.99</price></book><book genre='philosophy' publicationdate='1991' ISBN='1-861001-57-6'><title>The Gorgias</title><author><name>Plato</name></author><price>9.99</price></book></bookstore>
zurück zum Anfang

Problembehandlung:

Wenn Sie die Beispielanwendung ausführen, erhalten Sie die folgende Fehlermeldung angezeigt:

Eine nicht behandelte Ausnahme des Typs ' System.Xml.XmlException ist in in System.xml.dll aufgetreten.
Zusätzliche Informationen: Systemfehler.
Diese Fehlermeldung erhalten, wenn Sie die Datei Books.xml aus den Download-Link, der erwähnt wird im Abschnitt "Die XML-Daten aus einer Datei lesen" verwenden. Dieses Problem kann auftreten, wenn die Datei Books.xml ein Leerraum am Anfang der Datei verfügt. Um dieses Problem zu beheben, öffnen Sie die Datei "Books.xml" mit einem Texteditor, und entfernen Sie den Leerraum.

zurück zum Anfang
Informationsquellen
Weitere Informationen zum Lesen von XML mit XmlReader finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Website:zurück zum Anfang
XML-Datei vcnet

Warnung: Dieser Artikel wurde automatisch übersetzt.

Ominaisuudet

Artikkelin tunnus: 815658 – Viimeisin tarkistus: 07/03/2015 18:58:00 – Versio: 6.0

Microsoft .NET Framework 1.1, Microsoft .NET Framework 1.0, Microsoft Visual C++ 2005 Express Edition, Microsoft Visual C++ .NET 2003 Standard Edition, Microsoft Visual C++ .NET 2002 Standard Edition

  • kbdownload kbcode kbxml kbhowtomaster kbmt KB815658 KbMtde
Palaute