Udostępnij za pośrednictwem


XmlTextReader.ResetState Metoda

Definicja

Resetuje stan czytnika na ReadState.Initial.

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

Wyjątki

Wywołanie metody ResetState , jeśli czytnik został skonstruowany przy użyciu elementu XmlParserContext.

Dokumenty w jednym strumieniu nie współużytkują tego samego kodowania.

Przykłady

Poniższy przykład analizuje dwa dokumenty XML w jednym strumieniu.

#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

Uwagi

Uwaga

Począwszy od .NET Framework 2.0, zalecamy utworzenie XmlReader wystąpień przy użyciu XmlReader.Create metody , aby korzystać z nowych funkcji.

Ta metoda umożliwia analizowanie wielu dokumentów XML w jednym strumieniu. Po osiągnięciu końca dokumentu XML można wywołać ResetState metodę resetowania stanu czytnika w ramach przygotowań do następnego dokumentu XML.

Ważne

Dokumenty w strumieniu muszą współużytkować to samo kodowanie. Jeśli tak nie jest, gdy ResetState element jest wywoływany XmlException , jest zgłaszany. (Jest to zmiana zachowania z .NET Framework w wersji 1.1 lub starszej).

Następujące właściwości nie mają wpływu na ResetStateelement .

Dotyczy

Zobacz też