XmlTextReader.ResetState Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Reimposta lo stato del lettore su ReadState.Initial.
public:
void ResetState();
public void ResetState ();
member this.ResetState : unit -> unit
Public Sub ResetState ()
Eccezioni
Chiamata a ResetState
se il visualizzatore è stato costruito con un oggetto XmlParserContext.
I documenti di uno stesso flusso non condividono la stessa codifica.
Esempio
L'esempio seguente analizza due documenti XML in un singolo flusso.
#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
Commenti
Nota
A partire da .NET Framework 2.0, è consigliabile creare XmlReader istanze usando il XmlReader.Create metodo per sfruttare 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 del documento XML successivo.
Importante
I documenti nel flusso devono condividere la stessa codifica. Se questo non è il caso, quando ResetState
viene chiamato un XmlException oggetto viene generato. Si tratta di una modifica del comportamento da .NET Framework versione 1.1 e versioni precedenti.
Le proprietà seguenti non sono interessate da ResetState
.