XmlTextReader.ResetState 方法

定义

将读取器的状态重置为 ReadState.Initial。

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

例外

调用 ResetState 读取器是否使用 XmlParserContext.

单个流中的文档不共享相同的编码。

示例

以下示例在单个流中分析两个 XML 文档。

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

注解

注释

建议您使用XmlReader方法创建XmlReader.Create实例,以利用新功能。

使用此方法可以在单个流中分析多个 XML 文档。 到达 XML 文档末尾时,可以调用 ResetState 以重置读取器的状态,以准备下一个 XML 文档。

Important

流中的文档必须共享相同的编码。 如果不是这种情况,则引发调用ResetStateXmlException。 (这是从 .NET Framework 版本 1.1 及更早版本的行为变化)。

以下属性不受以下影响 ResetState

适用于

另请参阅