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.