Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

SO WIRD'S GEMACHT: Lesen von XML-Daten aus einem Stream

Dieser Artikel wurde zuvor veröffentlicht unter D301228
Disclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
301228 HOW TO: Read XML Data from a Stream
Zusammenfassung
Dieser Beitrag veranschaulicht die Verwendung der Klasse XmlTextReaderzum Lesen von XML-Daten (Extensible Markup Language) aus einem Stream. Der Stream kann aus einer Vielzahl von Quellen stammen, wie z. B. einem Bytestream von einem Server, einer Datei oder einer TextReader-Klasse.

Zurück zum Anfang

Anforderungen

Die folgende Liste nennt die empfohlene Hardware, Software, Netzwerkinfrastruktur sowie die Service Packs, die benötigt werden:
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server oder WIndows NT 4.0 Server
  • Microsoft Visual Studio .NET
Dieser Beitrag geht von der Annahme aus, dass Sie mit den folgenden Themen vertraut sind:
  • XML-Terminologie
  • Erstellen und Lesen von XML

So lesen Sie XML-Daten aus einem Stream

  1. Öffnen Sie Visual Studio .NET.
  2. Erstellen Sie eine neue Microsoft Visual Basic- (VB) oder Microsoft Visual C#-Konsolenanwendung.

    HINWEIS: Die folgenden Schritte bieten eine detaillierte Beschreibung, wie die Anwendung generiert wird. Sie können jedoch auch direkt mit Schritt 10 fortfahren, in dem vollständiger Code bereitgestellt wird.
  3. Stellen Sie sicher, dass das Projekt einen Verweis auf die NamespacesSystem.Xml und System.IO enthält.
  4. Verwenden Sie die Anweisung IMPORTS für den NamespaceXml, damit Sie nicht an späterer Stelle im CodeXmlTextReader-Deklarationen für diesen Namespace qualifizieren müssen. Die Anweisung IMPORTS muss vor allen anderen Deklarationen verwendet werden, und zwar in folgender Weise:
    Visual Basic .NET-Code
    Imports System.XmlImports System.IO
    Visual C#-Code
    using System.Xml;using System.IO;
  5. Erstellen oder Abrufen des XML-Streams. Ein Stream ist eine abstrakte Darstellung eines Eingabe- oder Ausgabegeräts, das die Quelle von oder das Ziel für Daten darstellt (in diesem Fall XML-Daten). Sie können in einen Stream schreiben oder aus ihm lesen, was Sie sich am besten als einen Fluss von Bytes vorstellen können.

    Streams werden verwendet, um Unabhängigkeit vom Gerät zu erreichen und daher Programmänderungen überflüssig zu machen, wenn sich beispielsweise die Quelle eines Streams ändert. Es existieren einige verschiedene Verfahren, einen Stream für die Klasse XmlTextReaderzu erstellen. Wählen Sie eins der folgenden Codebeispiele aus, um es der Prozedur Main des Standardmoduls hinzuzufügen:
    • Codebeispiel, das das Objekt StringReaderverwendet:

      Das Objekt StringReaderliest Zeichen aus Zeichenfolgen und nimmt bei der Konstruktion einen Zeichenfolgenwert an.Visual Basic .NET-Code
      Dim stream as System.IO.StringReaderstream = new StringReader("<?xml version='1.0'?>" & _"<!-- Diese Datei stellt das Inventar einer Buchhandlung dar. -->" & _"<bookstore>" & _" <book genre=""autobiography"" ISBN=""1-861003-11-0"">" & _"   <title>Die Autobiografie von Benjamin Franklin</title>" & _"   <author>" & _"       <first-name>Benjamin</first-name>" & _"       <last-name>Franklin</last-name>" & _"   </author>" & _"   <price>8.99</price>" & _" </book>" & _"</bookstore>")
      C#-Code
      StringReader stream;stream = new StringReader("<?xml version='1.0'?>" +	"<!-- Diese Datei stellt ein Teilstück der Inventardatenbank einer Buchhandlung dar. -->" +	"<bookstore>" +	" <book genre=\"autobiography\" publicationdate=\"1981\" ISBN=\"1-861003-11-0\">" +	"   <title>Die Autobiografie von 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>Platon</name>" +	"   </author>" +	"   <price>9.99</price>" +	" </book>" +	"</bookstore>");
    • Codebeispiel, das das Objekt StreamReaderverwendet:

      Das ObjektStreamReader wird verwendet, um Zeichen aus Dateien zu lesen. Es liest den Namen der zu lesenden Datei bei der Konstruktion ein:Visual Basic .NET-Code
      Dim stream as System.IO.StreamReader' Lädt die XML-Daten in der Datei <B>books.xml</B> in einen neuen Stream.stream = New StreamReader ("books.xml")
      C#-Code
      System.IO.StreamReader stream = new System.IO.StreamReader ("books.xml");
      Beachten Sie, dass hier die Datei Books.xml verwendet wird. Sie können Ihre eigene Datei Books.xml erstellen. Eine Beispieldatei Books.xml wird außerdem mit Visual Studio .Net und dem .Net-Framework-SDK geliefert.

  6. Konstruieren Sie eine KlasseXmlTextReader mit dem Stream. Normalerweise wird XmlTextReader verwendet, wenn Sie auf die XML-Daten als Rohdaten zugreifen müssen, ohne den Mehraufwand des Dokumentobjektmodells (DOM oder Document Object Model); daher stellt XmlTextReader ein schnelleres Verfahren für das Lesen von XML bereit. XmlTextReader verfügt über verschiedene Konstruktoren, um den Speicherort der XML-Daten anzugeben. Der folgende Code liest XmlTextReaderaus einem Stream:
    Visual Basic .NET-Code
    Dim reader As XmlTextReader = New XmlTextReader (stream)
    C#-Code
    XmlTextReader reader = null;	reader = new XmlTextReader (stream);
  7. Durchlesen der XML-Daten. Nach dem Laden führt XmlTextReader sequenzielle Lesevorgänge durch, um sich durch die XML-Daten zu bewegen, und verwendet die MethodeRead, um den nächsten Datensatz abzurufen. XmlTextReader gibt false zurück, wenn keine weiteren Datensätze mehr vorhanden sind.
    Visual Basic .NET-Code
    Do While (reader.Read()) ' Verarbeitung der Daten. Console.WriteLine(reader.Name)Loop' Das Lesen der XML-Datei ist abgeschlossen.Console.ReadLine() 'Pause
    C#-Code
    while (reader.Read()) {    // Verarbeitung der Daten.    ...}while (reader.Read()) {    // Verarbeitung der Daten.	Console.WriteLine(reader.Name);<}Console.ReadLine();
  8. Untersuchen der Knoten. Zum Verarbeiten der XML-Daten verfügt jeder Datensatz über einen Knotentyp, der anhand der EigenschaftNodeTypebestimmt werden kann. Die Eigenschaften NameundValuegeben den Knotennamen (die Element- und Attributnamen) und den Knotenwert (den Knotentext) des aktuellen Knotens (oder Datensatzes) zurück. Die Auflistung NodeTypebestimmt den Knotentyp. Das folgende Beispiel zeigt den Namen der Elemente und den Dokumenttyp an. Beachten Sie, dass in diesem Beispiel Elementattribute ignoriert werden.
    Visual Basic .NET-Code
    Do While (reader.Read())Select Case reader.NodeTypeCase XmlNodeType.Element 'Anfang der Elementanzeige.Console.Write("<" + reader.Name)Console.WriteLine(">")Case XmlNodeType.Text 'Anzeige des Textes in jedem der Elemente.Console.WriteLine(reader.Value)Case XmlNodeType.EndElement 'Ende der Elementanzeige.Console.Write("</" + reader.Name)Console.WriteLine(">")End SelectLoop
    C#-Code
    while (reader.Read()) {    switch (reader.NodeType)     {         case XmlNodeType.Element: // Der Knoten ist ein Element.             Console.Write("<" + reader.Name);   Console.WriteLine(">");             break;  case XmlNodeType.Text: //Anzeige des Textes in jedem der Elemente.             Console.WriteLine (reader.Value);             break;  case XmlNodeType. EndElement: //Ende der Elementanzeige.             Console.Write("</" + reader.Name);   Console.WriteLine(">");             break;    }}
  9. Untersuchen der Attribute. Elementknotentypen können eine Liste von Attributknoten umfassen, die ihnen zugeordnet sind. Die MethodeMovetoNextAttributedurchläuft der Reihe nach die Attribute im jeweiligen Element. Verwenden Sie die EigenschaftHasAttributes, um zu testen, ob der Knoten Attribute aufweist. Die EigenschaftAttributeCount gibt die Zahl der Attribute für den aktuellen Knoten zurück.
    Visual Basic .NET-Code
    Do While (reader.Read())Select Case reader.NodeTypeCase XmlNodeType.Element 'Anfang der Elementanzeige.Console.Write("<" + reader.Name)	 If reader.HasAttributes Then 'Wenn Attribute vorhanden sind 		While reader.MoveToNextAttribute() 					'Attributnamen und -wert anzeigen.Console.Write(" {0}='{1}'", reader.Name, reader.Value)End WhileEnd IfConsole.WriteLine(">")Case XmlNodeType.Text 'Anzeige des Textes in jedem der Elemente.Console.WriteLine(reader.Value)Case XmlNodeType.EndElement 'Ende der Elementanzeige.Console.Write("</" + reader.Name)Console.WriteLine(">")End SelectLoop
    C#-Code
    while (reader.Read()) {    switch (reader.NodeType)     {	case XmlNodeType.Element: // Der Knoten ist ein Element.	    Console.Write("<" + reader.Name);	    while (reader.MoveToNextAttribute()) // Attribute lesen.		Console.Write(" " + reader.Name + "='" + reader.Value + "'");	    Console.Write(">");    Console.WriteLine(">");	     break;   case XmlNodeType.Text: //Anzeige des Textes in jedem der Elemente.	     Console.WriteLine (reader.Value);	     break;   case XmlNodeType. EndElement: //Ende der Elementanzeige.	     Console.Write("</" + reader.Name);    Console.WriteLine(">");	     break;     }}

  10. Der Bequemlichkeit halber steht hier vollständiger Code zur Verfügung.
    Visual Basic.Net-Code
    Imports System.XmlImports System.IOModule Module1    Sub Main()	Dim stream As System.IO.StreamReader	' Lädt die XML-Daten in der Datei <B>books.xml</B> in einen neuen Stream.	stream = New StreamReader("books.xml")	Dim reader As XmlTextReader = New XmlTextReader(stream)	Do While (reader.Read())	    Select Case reader.NodeType		Case XmlNodeType.Element 'Anfang der Elementanzeige.		    Console.Write("<" + reader.Name)		    If reader.HasAttributes Then 'Wenn Attribute vorhanden sind			While reader.MoveToNextAttribute()			    'Attributnamen und -wert anzeigen.			    Console.Write(" {0}='{1}'", reader.Name, reader.Value)			End While		    End If		    Console.WriteLine(">")	        Case XmlNodeType.Text 'Anzeige des Textes in jedem der Elemente.		    Console.WriteLine(reader.Value)		Case XmlNodeType.EndElement 'Ende der Elementanzeige.		    Console.Write("</" + reader.Name)		    Console.WriteLine(">")	    End Select	Loop    End SubEnd Module

    C#-Code
    using System;using System.Xml;using System.IO;namespace ReadXMLFromStream{	/// <summary>	/// Zusammenfassende Beschreibung für Class1.	/// </summary>	class Class1	{		static void Main(string[] args)		{			System.IO.StreamReader stream = new System.IO.StreamReader ("books.xml");			XmlTextReader reader = null;			reader = new XmlTextReader (stream);			while (reader.Read())			{				switch (reader.NodeType)				{					case XmlNodeType.Element: // Der Knoten ist ein Element.						Console.Write("<" + reader.Name);						while (reader.MoveToNextAttribute()) // Attribute lesen.							Console.Write(" " + reader.Name + "='" + reader.Value + "'");						Console.Write(">");						Console.WriteLine(">");						break;					case XmlNodeType.Text: //Anzeige des Textes in jedem der Elemente.						Console.WriteLine (reader.Value);						break;					case XmlNodeType. EndElement: //Ende der Elementanzeige.						Console.Write("</" + reader.Name);						Console.WriteLine(">");						break;				}			}		}	}}
  11. Speichern Sie das Projekt, und führen Sie es aus.
Zurück zum Anfang

VERWEISE

Weitere Informationen finden Sie im Beitrag "XML in Microsoft .NET: .NET Framework XML Classes and C# Offer Simple, Scalable Data Manipulation" im MSDN Magazine auf der folgenden Microsoft-Website:Weitere Informationen über die Klassen XmlReader, StreamReader und StringReader finden Sie in der Microsoft .NET-Framework Class Library-Dokumentation.

Weitere Informationen über das Verwenden von XmlReader zum Lesen von XML-Daten finden Sie im Microsoft .NET-Framework Developer's Guide.

Zurück zum Anfang

Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
dotnet xml
Eigenschaften

Artikelnummer: 301228 – Letzte Überarbeitung: 10/25/2001 10:50:00 – Revision: 1.0

  • Microsoft .NET Framework Software Development Kit 1.0
  • kbhowto kbhowtomaster kbxml tslic_tslic KB301228
Feedback