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

備註

Note

建議您使用 XmlReader 方法來建立XmlReader.Create實例,以利用新功能。

此方法允許您在單一串流中解析多個 XML 文件。 當你讀完 XML 文件的結尾時,可以呼叫 ResetState 重設讀取器狀態,為下一個 XML 文件做準備。

Important

串流中的文件必須共享相同的編碼。 若非如此,當 ResetState 被 呼喚 XmlException 時 是擲出。 (這是與 .NET Framework 1.1 及更早版本的行為改變。)

以下性質不受 ResetState影響。

適用於

另請參閱