XmlTextReader::ResetState Method ()
Resets the state of the reader to ReadState.Initial.
Assembly: System.Xml (in System.Xml.dll)
| Exception | Condition |
|---|---|
| InvalidOperationException | Calling ResetState if the reader was constructed using an XmlParserContext. |
| XmlException | Documents in a single stream do not share the same encoding. |
Note |
|---|
Starting with the .NET Framework 2.0, we recommend that you create XmlReader instances by using the XmlReader::Create method to take advantage of new functionality. |
This method enables you to parse multiple XML documents in a single stream. When you reach the end of an XML document, you can call ResetState to reset the state of the reader in preparation for the next XML document.
Important |
|---|
The documents in the stream must share the same encoding. If this is not the case, when ResetState is called an XmlException is thrown. (This is a change in behavior from .NET Framework version 1.1 and earlier). |
The following properties are not affected by ResetState.
The following example parses two XML documents in a single stream.
#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(); } }
Available since 1.1

