XmlTextReader.ResetState Metodo

Definizione

Reimposta lo stato del lettore su ReadState.Initial.

public:
 void ResetState();
public void ResetState();
member this.ResetState : unit -> unit
Public Sub ResetState ()

Eccezioni

Chiamata se ResetState il lettore è stato costruito usando un oggetto XmlParserContext.

I documenti in un singolo flusso non condividono la stessa codifica.

Esempio

Nell'esempio seguente vengono analizzati due documenti XML in un singolo flusso.

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

Commenti

Note

È consigliabile creare XmlReader istanze usando il XmlReader.Create metodo per sfruttare le nuove funzionalità.

Questo metodo consente di analizzare più documenti XML in un singolo flusso. Quando si raggiunge la fine di un documento XML, è possibile chiamare ResetState per reimpostare lo stato del lettore in preparazione al documento XML successivo.

Importante

I documenti nel flusso devono condividere la stessa codifica. In caso contrario, quando ResetState viene chiamato viene generata un'eccezione XmlException . Si tratta di una modifica del comportamento rispetto a .NET Framework versione 1.1 e precedenti.

Le proprietà seguenti non sono interessate da ResetState.

Si applica a

Vedi anche