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 |
---|---|
Aufruf von ResetState, wenn der Reader unter Verwendung von XmlParserContext erstellt wurde. |
|
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