Freigeben über


XmlTextReader.ResetState-Methode

Setzt den Zustand des Readers auf ReadState.Initial zurück.

Namespace: System.Xml
Assembly: System.Xml (in system.xml.dll)

Syntax

'Declaration
Public Sub ResetState
'Usage
Dim instance As XmlTextReader

instance.ResetState
public void ResetState ()
public:
void ResetState ()
public void ResetState ()
public function ResetState ()

Ausnahmen

Ausnahmetyp Bedingung

InvalidOperationException

Aufruf von ResetState, wenn der Reader unter Verwendung von XmlParserContext erstellt wurde.

XmlException

Dokumente in einem einzelnen Stream verwenden nicht dieselbe Codierung.

Hinweise

Hinweis

Die empfohlene Vorgehensweise für die Version Microsoft .NET Framework, Version 2.0 besteht darin, mithilfe der System.Xml.XmlReader.Create-Methode XmlReader-Instanzen zu erstellen. So können Sie die neuen Features dieser Version in vollem Umfang nutzen. Weitere Informationen finden Sie unter Erstellen von XML-Readern.

Diese Methode ermöglicht die Analyse mehrerer XML-Dokumente innerhalb eines einzigen Streams. Wenn das Ende eines eines XML-Dokuments erreicht ist, können Sie ResetState aufrufen, um den Zustand des Reader als Vorbereitung für das Lesen des nächsten XML-Dokuments wieder zurückzusetzen.

Wichtig

Die Dokumente im Stream müssen dieselbe Codierung verwenden. Wenn dies nicht der Fall ist, wird bei einem Aufruf von ResetState eine XmlException ausgelöst. (Dies stellt eine Änderung gegenüber .NET Framework, Version 1.1 und früher, dar.)

Auf die folgenden Eigenschaften hat ResetState keine Auswirkungen.

Beispiel

Im folgenden Beispiel werden zwei XML-Dokumente in einem einzelnen Stream analysiert.

Imports System
Imports System.IO
Imports System.Text
Imports System.Xml

public class Sample

  public shared sub Main()

     Dim enc as Encoding = new UTF8Encoding()
     Dim utf8Buffer as byte() = enc.GetBytes("<root> 12345 </root>") 

     enc = new UnicodeEncoding()
     Dim unicodeBuffer as byte() = enc.GetBytes("<?xml version='1.0' ?><unicode> root </unicode>")

     Dim memSreaderm as MemoryStream = new MemoryStream()
     memSreaderm.Write(unicodeBuffer, 0, unicodeBuffer.Length)
     memSreaderm.Write(utf8Buffer, 0, utf8Buffer.Length)
     memSreaderm.Position = 0

     Dim reader as XmlTextReader = new XmlTextReader(memSreaderm)

     while(reader.Read()) 
        Console.WriteLine("NodeType: {0}", reader.NodeType)
        if (XmlNodeType.EndElement = reader.NodeType And "root" = reader.Name) 
         exit while
        end if
        
        if (XmlNodeType.EndElement = reader.NodeType) 
          reader.ResetState()
       end if
    end while

  end sub
end class
using System;
using System.IO;
using System.Text;
using System.Xml;

public class Sample
{
  public static void Main(){

     Encoding enc = new UTF8Encoding();
     byte[] utf8Buffer = enc.GetBytes("<root> 12345 </root>"); 

     enc = new UnicodeEncoding();
     byte[] unicodeBuffer = enc.GetBytes("<?xml version='1.0' ?><unicode> root </unicode>");

     MemoryStream memStrm = new MemoryStream();
     memStrm.Write(unicodeBuffer, 0, unicodeBuffer.Length);
     memStrm.Write(utf8Buffer, 0, utf8Buffer.Length);
     memStrm.Position = 0;

     XmlTextReader reader = new XmlTextReader(memStrm);

     while(reader.Read()) {
        Console.WriteLine("NodeType: {0}", reader.NodeType);
        if (XmlNodeType.EndElement == reader.NodeType && "root" == reader.Name) {
          break;
        }

        if (XmlNodeType.EndElement == reader.NodeType) {
          reader.ResetState();
       }
    } 

  }
}
#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Text;
using namespace System::Xml;
int main()
{
   Encoding^ enc = gcnew UTF8Encoding;
   array<Byte>^utf8Buffer = enc->GetBytes( "<root> 12345 </root>" );
   enc = gcnew UnicodeEncoding;
   array<Byte>^unicodeBuffer = enc->GetBytes( "<?xml version='1.0' ?><unicode> root </unicode>" );
   MemoryStream^ memStrm = gcnew MemoryStream;
   memStrm->Write( unicodeBuffer, 0, unicodeBuffer->Length );
   memStrm->Write( utf8Buffer, 0, utf8Buffer->Length );
   memStrm->Position = 0;
   XmlTextReader^ reader = gcnew XmlTextReader( memStrm );
   while ( reader->Read() )
   {
      Console::WriteLine( "NodeType: {0}", reader->NodeType );
      if ( XmlNodeType::EndElement == reader->NodeType && "root" == reader->Name )
            break;
      if ( XmlNodeType::EndElement == reader->NodeType )
            reader->ResetState();
   }
}
import System.*;
import System.IO.*;
import System.Text.*;
import System.Xml.*;

public class Sample
{
    public static void main(String[] args)
    {
        Encoding enc = new UTF8Encoding();
        ubyte utf8Buffer[] = enc.GetBytes("<root> 12345 </root>");

        enc = new UnicodeEncoding();
        ubyte unicodeBuffer[] = enc.GetBytes("<?xml version='1.0' ?><unicode>" 
            + " root </unicode>");

        MemoryStream memStrm = new MemoryStream();
        memStrm.Write(unicodeBuffer, 0, unicodeBuffer.get_Length());
        memStrm.Write(utf8Buffer, 0, utf8Buffer.get_Length());
        memStrm.set_Position(0);

        XmlTextReader reader = new XmlTextReader(memStrm);

        while (reader.Read()) {
            Console.WriteLine("NodeType: {0}", reader.get_NodeType());
            if (XmlNodeType.EndElement.Equals(reader.get_NodeType())
                && "root".Equals(reader.get_Name())) {
                break;
            }

            if (XmlNodeType.EndElement.Equals(reader.get_NodeType())) {
                reader.ResetState();
            }
        }
    } //main
} //Sample 

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

XmlTextReader-Klasse
XmlTextReader-Member
System.Xml-Namespace
ReadState-Enumeration

Weitere Ressourcen

Lesen von XML mit dem "XmlReader"