XmlTextReader.ResetState Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Resets the state of the reader to ReadState.Initial.
public:
void ResetState();
public void ResetState ();
member this.ResetState : unit -> unit
Public Sub ResetState ()
Exceptions
Calling ResetState
if the reader was constructed using an XmlParserContext.
Documents in a single stream do not share the same encoding.
Examples
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();
}
}
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();
}
}
}
}
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
Remarks
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
.