Metodo XmlTextReader.ResetState (System.Xml)

Cambia visualizzazione:
ScriptFree
Riferimento a .NET Framework
Metodo XmlTextReader.ResetState

Reimposta lo stato del visualizzatore su ReadState.Initial.

Spazio dei nomi: System.Xml
Assembly: System.Xml (in system.xml.dll)

Sintassi

Visual Basic - (Dichiarazione)
Public Sub ResetState
Visual Basic (Utilizzo)
Dim instance As XmlTextReader

instance.ResetState
C#
public void ResetState ()
C++
public:
void ResetState ()
J#
public void ResetState ()
JScript
public function ResetState ()
Eccezioni

Tipo di eccezione Condizione

InvalidOperationException

Chiamata a ResetState se il visualizzatore è stato costruito con un oggetto XmlParserContext.

XmlException

I documenti di uno stesso flusso non condividono la stessa codifica.

Note

NotaNota

Nella versione Microsoft .NET Framework versione 2.0 è consigliabile creare istanze di XmlReader utilizzando il metodo System.Xml.XmlReader.Create. In questo modo è possibile sfruttare completamente le nuove funzionalità introdotte in questa versione. Per ulteriori informazioni, vedere Creazione di lettori XML.

Questo metodo consente di analizzare più documenti XML in un unico flusso. Quando si raggiunge la fine di un documento XML, è possibile chiamare ResetState per reimpostare lo stato del visualizzatore e prepararlo per il successivo documento XML.

NotaImportante:

I documenti del flusso devono condividere la stessa codifica. In caso contrario, quando viene chiamato ResetState, viene generata un'XmlException. Questo comportamento è stato modificato rispetto a .NET Framework 1.1 e versioni precedenti.

ResetState non ha alcun effetto sulle proprietà riportate di seguito.

Esempio

Nell'esempio riportato di seguito vengono analizzati due documenti XML di uno stesso flusso.

Visual Basic
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

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

  }
}

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


J#
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 

Piattaforme

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.

Informazioni sulla versione

.NET Framework

Supportato in: 2.0 1.1 1.0

.NET Compact Framework

Supportato in: 2.0 1.0
Vedere anche