XmlTextReader.ResetState メソッド
アセンブリ: System.Xml (system.xml.dll 内)



![]() |
---|
Microsoft .NET Framework version 2.0 リリースでは、System.Xml.XmlReader.Create メソッドを使用して XmlReader インスタンスを作成することをお勧めします。これにより、このリリースで導入された新機能を十分に活用できます。詳細については、「XML リーダーの作成」を参照してください。 |
このメソッドを使用すると、単一ストリーム内の複数の XML ドキュメントを解析できます。XML ドキュメントの末尾に到達したら、ResetState を呼び出して、次の XML ドキュメントのための準備としてリーダーの状態をリセットできます。
![]() |
---|
ストリーム内のドキュメントは同じエンコーディングを共有する必要があります。共有していない場合、ResetState を呼び出すと XmlException がスローされます。これは、.NET Framework Version 1.1 以前からの動作変更点です。 |
ResetState の影響を受けないプロパティを次に示します。
-
Namespaces
-
XmlResolver
-
WhitespaceHandling

単一ストリーム内の 2 つの XML ドキュメントを解析する例を次に示します。
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
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(); } } } }
#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(); } }
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

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- XmlTextReader.ResetState メソッドのページへのリンク