XmlTextReader.ResetState Method ()

 
System_CAPS_noteNote

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Resets the state of the reader to ReadState.Initial.

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

public void ResetState()

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.

System_CAPS_noteNote

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.

System_CAPS_importantImportant

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;
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();
       }
    } 

  }
}

.NET Framework
Available since 1.1
Return to top
Show: