XmlTextReader.ResetState 方法
定义
将读取器的状态重置为 ReadState.Initial。Resets the state of the reader to ReadState.Initial.
public:
void ResetState();
public void ResetState ();
member this.ResetState : unit -> unit
Public Sub ResetState ()
例外
如果读取器是使用 XmlParserContext 构造的,则调用 ResetState。Calling ResetState if the reader was constructed using an XmlParserContext.
单个流中的文档不共享同一编码。Documents in a single stream do not share the same encoding.
示例
下面的示例将分析单个流中的两个 XML 文档。The following example parses two XML documents in a single stream.
#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 使用方法创建实例 XmlReader.Create 以利用新功能。Starting with the .NET Framework 2.0, we recommend that you create XmlReader instances by using the XmlReader.Create method to take advantage of new functionality.
此方法使你能够在单个流中分析多个 XML 文档。This method enables you to parse multiple XML documents in a single stream. 当你到达 XML 文档的末尾时,你可以调用 ResetState 来重置读取器的状态以准备下一个 xml 文档。When you reach the end of an XML document, you can call ResetState to reset the state of the reader in preparation for the next XML document.
重要
流中的文档必须共享相同的编码。The documents in the stream must share the same encoding. 如果不是这种情况,则在 ResetState 调用时会 XmlException 引发。If this is not the case, when ResetState is called an XmlException is thrown. (这是 .NET Framework 版本1.1 及更低版本) 的行为更改。(This is a change in behavior from .NET Framework version 1.1 and earlier).
以下属性不受影响 ResetState 。The following properties are not affected by ResetState.