XmlTextReader.ResetState 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
판독기의 상태를 ReadState.Initial로 다시 설정합니다.
public:
void ResetState();
public void ResetState ();
member this.ResetState : unit -> unit
Public Sub ResetState ()
예외
XmlParserContext를 사용하여 판독기를 생성한 상태에서 ResetState
를 호출하는 경우
단일 스트림의 여러 문서가 동일한 인코딩을 사용하지 않는 경우
예제
다음 예제에서는 단일 스트림에서 두 개의 XML 문서를 구문 분석합니다.
#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
설명
참고
.NET Framework 2.0부터 새 기능을 활용하기 위해 메서드를 사용하여 XmlReader.Create 인스턴스를 만드는 XmlReader 것이 좋습니다.
이 메서드를 사용하면 단일 스트림에서 여러 XML 문서를 구문 분석할 수 있습니다. XML 문서의 끝에 도달하면 다음 XML 문서를 준비하기 위해 판독기의 상태를 다시 설정하도록 호출 ResetState
할 수 있습니다.
중요
스트림의 문서는 동일한 인코딩을 공유해야 합니다. 그렇지 않은 경우 호출되는 경우 ResetState
throw XmlException 됩니다. (이는 .NET Framework 버전 1.1 이전의 동작 변경입니다.)
다음 속성은 영향을 받지 않습니다 ResetState
.