XmlReader Класс

Определение

Предоставляет средство чтения, обеспечивающее быстрый прямой доступ (без кэширования) к данным XML.

public ref class XmlReader abstract : IDisposable
public ref class XmlReader abstract
public abstract class XmlReader : IDisposable
public abstract class XmlReader
type XmlReader = class
    interface IDisposable
type XmlReader = class
Public MustInherit Class XmlReader
Implements IDisposable
Public MustInherit Class XmlReader
Наследование
XmlReader
Производный
Реализации

Примеры

В следующем примере кода показано, как использовать асинхронный API для анализа XML.

async Task TestReader(System.IO.Stream stream)
{
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.Async = true;

    using (XmlReader reader = XmlReader.Create(stream, settings))
    {
        while (await reader.ReadAsync())
        {
            switch (reader.NodeType)
            {
                case XmlNodeType.Element:
                    Console.WriteLine("Start Element {0}", reader.Name);
                    break;
                case XmlNodeType.Text:
                    Console.WriteLine("Text Node: {0}",
                             await reader.GetValueAsync());
                    break;
                case XmlNodeType.EndElement:
                    Console.WriteLine("End Element {0}", reader.Name);
                    break;
                default:
                    Console.WriteLine("Other node {0} with value {1}",
                                    reader.NodeType, reader.Value);
                    break;
            }
        }
    }
}
Public Async Function TestReader(stream As System.IO.Stream) As Task
    Dim settings As New XmlReaderSettings()
    settings.Async = True

    Using reader As XmlReader = XmlReader.Create(stream, settings)
        While (Await reader.ReadAsync())
            Select Case (reader.NodeType)
                Case XmlNodeType.Element
                    Console.WriteLine("Start Element {0}", reader.Name)
                Case XmlNodeType.Text
                    Console.WriteLine("Text Node: {0}",
                             Await reader.GetValueAsync())
                Case XmlNodeType.EndElement
                    Console.WriteLine("End Element {0}", reader.Name)
                Case Else
                    Console.WriteLine("Other node {0} with value {1}",
                                    reader.NodeType, reader.Value)
            End Select
        End While
    End Using
End Function

Комментарии

XmlReader обеспечивает однопроходный доступ только для чтения к XML-данным в документе или потоке. Этот класс соответствует стандартам W3C язык XML (XML) 1,0 (Четвертый выпуск) и пространствам имен в рекомендациях по XML 1,0 (третий выпуск) .

XmlReader методы позволяют перемещаться по XML-данным и читать содержимое узла. Свойства класса отражать значение текущего узла, где расположен модуль чтения. ReadStateЗначение свойства указывает текущее состояние модуля чтения XML. Например, для свойства задается ReadState.Initial XmlReader.Read метод и ReadState.Closed XmlReader.Close метод. XmlReader также обеспечивает проверку согласованности данных и проверку DTD или схемы.

XmlReader использует модель извлечения для получения данных. Эта модель:

  • Упрощает управление состоянием с помощью естественного уточнения процедур сверху вниз.

  • Поддерживает несколько входных потоков и уровней.

  • Позволяет клиенту предоставить средству синтаксического анализа буфер, в который непосредственно записывается строка, и таким образом избежать необходимости в дополнительной копии строки.

  • Поддерживает выборочную обработку. Клиент может пропускать элементы и обрабатывать те, которые представляют интерес для приложения. Вы также можете заранее задать свойства, чтобы управлять обработкой XML-потока (например, нормализацией).

Содержание

Создание средства чтения XML
Проверка XML-данных
Соответствие данных
Навигация по узлам
Чтение XML-элементов
Чтение атрибутов XML
Чтение XML-содержимого
Преобразование в типы CLR
Асинхронное программирование
Вопросы безопасности

Создание средства чтения XML

CreateДля создания экземпляра используйте метод XmlReader .

хотя платформа .NET Framework предоставляет конкретные реализации XmlReader класса, такие как XmlTextReader , XmlNodeReader и XmlValidatingReader классы, рекомендуется использовать специализированные классы только в следующих сценариях:

  • Если необходимо считать поддерево XML DOM из XmlNode объекта, используйте XmlNodeReader класс. (Однако этот класс не поддерживает проверку DTD или схемы.)

  • Если необходимо развернуть сущности по запросу, вы не хотите нормализовать содержимое текста или не хотите, чтобы атрибуты по умолчанию возвращались, используйте XmlTextReader класс.

Чтобы указать набор компонентов, которые необходимо включить в модуле чтения XML, передайте System.Xml.XmlReaderSettings объект в Create метод. Можно использовать один System.Xml.XmlReaderSettings объект для создания нескольких модулей чтения с одной и той же функциональностью или изменить System.Xml.XmlReaderSettings объект, чтобы создать новое средство чтения с другим набором функций. Можно также легко добавить компоненты в существующий модуль чтения.

Если объект не используется System.Xml.XmlReaderSettings , используются параметры по умолчанию. CreateДополнительные сведения см. на странице справки.

XmlReader вызывает исключение XmlException On XML Parse Errors. После возникновения исключения состояние модуля чтения не может быть предсказуемым. Например, тип сообщаемого узла может отличаться от фактического типа узла текущего узла. Используйте ReadState свойство, чтобы проверить, находится ли модуль чтения в состоянии ошибки.

Проверка XML-данных

Для определения структуры XML-документа и его связей, типов данных и ограничений содержимого используется определение типа документа (DTD) или схема языка определения схемы XML (XSD). XML-документ считается правильным форматом, если он соответствует всем синтаксическим требованиям, определенным в рекомендациях консорциума W3C по XML 1,0. Он считается допустимым, если он правильно сформирован, а также соответствует ограничениям, определенным в DTD или схеме. (См. раздел Схема W3C XML, часть 1: структуры и Схема W3C XML, часть 2: рекомендации по типам.) Таким образом, несмотря на то, что все допустимые XML-документы имеют правильный формат, не все XML-документы правильного формата являются допустимыми.

Данные можно проверить по DTD, встроенной XSD-схеме или схеме XSD, хранящейся в XmlSchemaSet объекте (кэше). Эти сценарии описаны на Create странице справки. XmlReader не поддерживает проверку схемы XML-Data сокращенной (XDR).

Следующие параметры XmlReaderSettings класса используются для указания типа проверки, XmlReader поддерживаемой экземпляром.

Использовать этот XmlReaderSettings элемент Чтобы указать
СвойствоDtdProcessing Следует ли разрешить обработку DTD. По умолчанию обработка определения DTD не разрешается.
СвойствоValidationType Должен ли модуль чтения проверять данные, а также тип выполняемой проверки (DTD или Schema). По умолчанию проверка данных не выполняется.
СобытиеValidationEventHandler Обработчик событий для получения сведений о событиях проверки. Если обработчик события не предоставлен, при первой ошибке проверки вызывается исключение XmlException.
СвойствоValidationFlags Дополнительные параметры проверки через XmlSchemaValidationFlags члены перечисления:

- AllowXmlAttributes--Разрешить XML-атрибуты ( xml:* ) в документах экземпляров, даже если они не определены в схеме. Атрибуты проверяются на основе их типов данных. Сведения XmlSchemaValidationFlags о параметрах, используемых в конкретных сценариях, см. на странице справки. (По умолчанию отключено.)
- ProcessIdentityConstraints --В xs:ID xs:IDREF xs:key xs:keyref xs:unique ходе проверки обнаружены ограничения удостоверения процесса (,,,,). (Включено по умолчанию.)
- ProcessSchemaLocation --Обработка схем, заданных xsi:schemaLocation xsi:noNamespaceSchemaLocation атрибутом или. (Включено по умолчанию.)
- ProcessInlineSchema--Обработка встроенных схем XML во время проверки. (По умолчанию отключено.)
- ReportValidationWarnings— Сообщать о событиях, если возникает предупреждение проверки. Предупреждение обычно формируется при отсутствии определения DTD или схемы XML для проверки конкретного элемента или атрибута. Параметр ValidationEventHandler используется для уведомления. (По умолчанию отключено.)
Schemas XmlSchemaSet, используемый при проверке данных.
СвойствоXmlResolver XmlResolverДля разрешения и доступа к внешним ресурсам. Это могут быть внешние сущности, такие как DTD и схемы, а также xs:include любые xs:import элементы или, содержащиеся в схеме XML. Если не указать XmlResolver , XmlReader компонент использует значение по умолчанию без XmlUrlResolver учетных данных пользователя.

Соответствие данных

Средства чтения XML, созданным Create метод следующие предварительные требования соответствия по умолчанию:

  • Новые строки и значения атрибутов нормализованы согласно рекомендациям консорциума W3C по XML 1,0.

  • Все сущности разворачиваются автоматически.

  • Атрибуты по умолчанию, объявленные в определении типа документа, всегда добавляются, даже если средство чтения не проверяется.

  • Допускается объявление префикса XML, сопоставленного с правильным URI пространства имен XML.

  • Имена нотаций в одном NotationType объявление атрибута и NmTokens в одном Enumeration объявление атрибута отличаются.

Используйте эти XmlReaderSettings свойства, чтобы указать тип проверки соответствия, которую необходимо включить.

Использовать это XmlReaderSettings свойство Кому По умолчанию
СвойствоCheckCharacters Включить или отключить проверки для следующих:

-Символы находятся в диапазоне допустимых символов XML, как определено в разделе 2,2 символов статьи рекомендации консорциума W3C XML 1,0.
— Все имена XML являются допустимыми, как определено в разделе Общие синтаксические конструкции 2,3 рекомендации консорциума W3C XML 1,0.

Если для этого свойства задано значение true (по умолчанию), XmlException создается исключение, если XML-файл содержит недопустимые символы или недопустимые имена XML (например, имя элемента начинается с цифры).
Проверка символов и имен включена.

Задание свойству CheckCharacters значения false отключает проверку символов для ссылок на сущности символов. Если модуль чтения обрабатывает текстовые данные, он всегда проверяет допустимость имен XML независимо от этого параметра. Примечание. Рекомендации по XML 1,0 требуют соответствия уровня документа при наличии DTD. Таким образом, если средство чтения настроено для поддержки ConformanceLevel.Fragment , но XML-данные содержат определение типа документа (DTD), XmlException создается исключение.
СвойствоConformanceLevel Выберите уровень соответствия для принудительного применения:

- Document. Соответствует правилам для XML-документа с правильным форматом 1,0.
- Fragment. Соответствует правилам для фрагмента документа правильного формата, который можно использовать как внешнюю анализируемую сущность.
- Auto. Соответствует уровню, принятому модулем чтения.

Если данные не согласованы, XmlException создается исключение.
Document

Текущий узел — это XML-узел, на котором в настоящий момент размещается модуль чтения XML. Все XmlReader методы выполняют операции в связи с этим узлом, а все XmlReader свойства соответствуют значению текущего узла.

Следующие методы упрощают навигацию по узлам и анализу данных.

Используйте этот XmlReaderSettings метод Кому
Read Прочтите первый узел и прокрутите поток по одному узлу за раз. Такие вызовы обычно выполняются внутри while цикла.

Используйте NodeType свойство, чтобы получить тип (например, атрибут, комментарий, элемент и т. д.) текущего узла.
Skip Пропустите дочерние элементы текущего узла и перейдите к следующему узлу.
MoveToContent и MoveToContentAsync Пропускать узлы, не являющиеся узлами содержимого, и переходить к следующему узлу содержимого или к концу файла.

Узлы, не являющиеся узлами содержимого ProcessingInstruction , включают, DocumentType ,, Comment Whitespace и SignificantWhitespace .

Узлы содержимого содержат текст, отличный от пробела,, CDATA EntityReference и EndEntity .
ReadSubtree Чтение элемента и всех его дочерних элементов и возврат нового XmlReader экземпляра в значение ReadState.Initial .

Этот метод полезен для создания границ вокруг XML-элементов. Например, если требуется передать данные в другой компонент для обработки и требуется ограничить объем данных, доступ к которым может получить компонент.

См XmlReader.Read . на справочной странице Пример перемещения по текстовому потоку по одному узлу и отображения типа каждого узла.

В следующих разделах описывается, как можно читать определенные типы данных, такие как элементы, атрибуты и типизированные данные.

Чтение XML-элементов

В следующей таблице перечислены методы и свойства, XmlReader предоставляемые классом для обработки элементов. После того, как объект XmlReader позиционируется на элементе, свойства узла, например Name, отражают значения этого элемента. Кроме описанных ниже членов для обработки элементов процесса могут также использоваться любые методы и свойства класса XmlReader. Например, для чтения содержимого элемента используется метод ReadInnerXml.

Примечание

Определения открывающих тегов, закрывающих тегов и пустых тегов элементов см. в разделе 3,1 рекомендации консорциума W3C по XML 1,0 .

Использовать этот XmlReader элемент Кому
Метод IsStartElement Проверьте, является ли текущий узел открывающим тегом или пустым тегом элемента.
Метод ReadStartElement Убедитесь, что текущий узел является элементом, и перейдите к следующему узлу (вызовы IsStartElement , за которыми следует Read ).
Метод ReadEndElement Убедитесь, что текущий узел является закрывающим тегом и переместит читателя на следующий узел.
Метод ReadElementString Чтение элемента, доступного только для текста.
Метод ReadToDescendant Передвиньте модуль чтения XML к следующему элементу-потомку (дочернему), имеющему указанное имя.
Метод ReadToNextSibling Переместить модуль чтения XML к следующему родственному элементу с указанным именем.
СвойствоIsEmptyElement Проверьте, содержит ли текущий элемент тег конечного элемента. Пример:

- <item num="123"/> ( IsEmptyElement имеет true ).
- <item num="123"> </item> ( IsEmptyElement имеет значение false , хотя содержимое элемента пусто.)

Пример чтения текстового содержимого элементов см. в описании ReadString метода. В следующем примере элементы обрабатываются с помощью while цикла.

while (reader.Read()) {
  if (reader.IsStartElement()) {
    if (reader.IsEmptyElement)
                {
                    Console.WriteLine("<{0}/>", reader.Name);
                }
                else {
      Console.Write("<{0}> ", reader.Name);
      reader.Read(); // Read the start tag.
      if (reader.IsStartElement())  // Handle nested elements.
        Console.Write("\r\n<{0}>", reader.Name);
      Console.WriteLine(reader.ReadString());  //Read the text content of the element.
    }
  }
}
While reader.Read()
  If reader.IsStartElement() Then
    If reader.IsEmptyElement Then
      Console.WriteLine("<{0}/>", reader.Name)
    Else
      Console.Write("<{0}> ", reader.Name)
      reader.Read() ' Read the start tag.
      If reader.IsStartElement() Then ' Handle nested elements.
        Console.Write(vbCr + vbLf + "<{0}>", reader.Name)
      End If
      Console.WriteLine(reader.ReadString()) 'Read the text content of the element.
    End If
  End If
End While

Чтение атрибутов XML

Атрибуты XML чаще всего встречаются в элементах, но они также разрешены для XML-декларации и узлов типов документов.

При позиционировании на узле элемента MoveToAttribute метод позволяет выполнить проход по списку атрибутов элемента. Обратите внимание, что after MoveToAttribute вызывается, свойства узла, такие как Name , NamespaceURI , и Prefix отражает свойства этого атрибута, а не свойства элемента, к которому принадлежит атрибут.

XmlReaderКласс предоставляет эти методы и свойства для чтения и обработки атрибутов элементов.

Использовать этот XmlReader элемент Кому
СвойствоHasAttributes Проверьте, имеются ли у текущего узла какие либо атрибуты.
СвойствоAttributeCount Возвращает количество атрибутов текущего элемента.
Метод MoveToFirstAttribute Перейти к первому атрибуту в элементе.
Метод MoveToNextAttribute Переход к следующему атрибуту в элементе.
Метод MoveToAttribute Перейти к указанному атрибуту.
GetAttribute метод или Item[] свойство Получение значения указанного атрибута.
СвойствоIsDefault Проверьте, является ли текущий узел атрибутом, созданным из значения по умолчанию, определенного в DTD или схеме.
Метод MoveToElement Переход к элементу, владеющему текущим атрибутом. Используйте этот метод, чтобы вернуться к элементу после перехода по его атрибутам.
Метод ReadAttributeValue Проанализируйте значение атрибута в одном или нескольких Text EntityReference узлах, или EndEntity .

Для обработки атрибутов можно использовать и любые обычные методы и свойства объекта XmlReader. Например, если объект XmlReader расположен на атрибуте, свойства Name и Value будут отражать значения этого атрибута. Также можно использовать любые методы Read содержимого, чтобы получить значение атрибута.

В этом примере используется AttributeCount свойство для навигации по всем атрибутам элемента.

// Display all attributes.
if (reader.HasAttributes) {
  Console.WriteLine("Attributes of <" + reader.Name + ">");
  for (int i = 0; i < reader.AttributeCount; i++) {
    Console.WriteLine("  {0}", reader[i]);
  }
  // Move the reader back to the element node.
  reader.MoveToElement();
}
' Display all attributes.
If reader.HasAttributes Then
  Console.WriteLine("Attributes of <" + reader.Name + ">")
  Dim i As Integer
  For i = 0 To (reader.AttributeCount - 1)
    Console.WriteLine("  {0}", reader(i))
  Next i
  ' Move the reader back to the element node.
  reader.MoveToElement() 
End If

В этом примере MoveToNextAttribute метод используется в while цикле для навигации по атрибутам.

if (reader.HasAttributes) {
  Console.WriteLine("Attributes of <" + reader.Name + ">");
  while (reader.MoveToNextAttribute()) {
    Console.WriteLine(" {0}={1}", reader.Name, reader.Value);
  }
  // Move the reader back to the element node.
  reader.MoveToElement();
}
If reader.HasAttributes Then
  Console.WriteLine("Attributes of <" + reader.Name + ">")
  While reader.MoveToNextAttribute()
    Console.WriteLine(" {0}={1}", reader.Name, reader.Value)
  End While
  ' Move the reader back to the element node.
  reader.MoveToElement()
End If

Чтение атрибутов на узлах объявления XML

Если модуль чтения XML расположен на узле объявления XML, Value свойство возвращает версию, автономную информацию и сведения о кодировке в виде одной строки. XmlReader объекты, созданные Create методом, XmlTextReader классом и XmlValidatingReader классом, предоставляют в качестве атрибутов версию, автономность и элементы кодирования.

Чтение атрибутов на узлах типов документов

Когда модуль чтения XML располагается на узле типа документа, GetAttribute метод и Item[] свойство можно использовать для возвращения значений для системы и открытых литералов. Например, вызов метода reader.GetAttribute("PUBLIC") возвращает значение PUBLIC.

Чтение атрибутов на узлах инструкции по обработке

Если XmlReader расположен на узле инструкций по обработке, свойство Value возвращает текстовое содержимое целиком. Элементы в узле инструкции по обработке не рассматриваются как атрибуты. Они не могут быть считаны с GetAttribute помощью MoveToAttribute метода или.

Чтение XML-содержимого

Класс XMLReader включает следующие члены, которые считывают содержимое из XML-файла и возвращают содержимое в виде строковых значений. (Чтобы получить типы CLR, см. следующий раздел.)

Использовать этот XmlReader элемент Кому
СвойствоValue Возвращает текстовое содержимое текущего узла. Возвращаемое значение зависит от типа узла. Value Дополнительные сведения см. на странице справки.
Метод ReadString Получение содержимого элемента или текстового узла в виде строки. Этот метод прекращает работу в инструкциях по обработке и комментариях.

Дополнительные сведения о том, как этот метод обрабатывает определенные типы узлов, см ReadString . на странице справки.
Методы ReadInnerXml и ReadInnerXmlAsync Возвращает все содержимое текущего узла, включая разметку, но не исключая начальный и конечный теги. Например, для:

<node>this<child id="123"/></node>

ReadInnerXml возвращает:

this<child id="123"/>
Методы ReadOuterXml и ReadOuterXmlAsync Получение всего содержимого текущего узла и его дочерних элементов, включая разметку и теги начала и окончания. Например, для:

<node>this<child id="123"/></node>

ReadOuterXml возвращает:

<node>this<child id="123"/></node>

Преобразование в типы CLR

Члены XmlReader класса (перечисленные в следующей таблице) можно использовать для считывания XML-данных и возвращаемых значений в качестве типов среды CLR вместо строк. Эти члены позволяют получать в представлении значения, наиболее подходящие для задачи кода, без необходимости вручную анализировать или преобразовывать строковые значения.

  • Методы ReadElementContentAs могут вызываться только для типов узлов элементов. Их нельзя использовать для элементов, содержащих дочерние элементы или смешанное содержимое. Объект XmlReader при вызове считывает открывающий тег, читает содержимое элемента и перемещается за закрывающий тег элемента. Инструкции по обработке и комментарии пропускаются, а сущности раскрываются.

  • Методы реадконтентас считывают текстовое содержимое в текущей позиции модуля чтения, и если с данными XML не связаны какие-либо схемы или сведения о типах данных, преобразуйте текстовое содержимое в запрошенный тип возвращаемого значения. Текст, пробелы, значимые пробелы и разделы CDATA объединяются. Комментарии и инструкции по обработке пропускаются, и ссылки на сущности разрешаются автоматически.

XmlReaderКласс использует правила, определенные в рекомендациях консорциума W3C XML Schema, часть 2: типы данных.

Используйте этот XmlReader метод Возврат этого типа CLR
ReadContentAsBoolean и ReadElementContentAsBoolean Boolean
ReadContentAsDateTime и ReadElementContentAsDateTime DateTime
ReadContentAsDouble и ReadElementContentAsDouble Double
ReadContentAsLong и ReadElementContentAsLong Int64
ReadContentAsInt и ReadElementContentAsInt Int32
ReadContentAsString и ReadElementContentAsString String
ReadContentAs и ReadElementContentAs Тип, указанный с помощью returnType параметра
ReadContentAsObject и ReadElementContentAsObject Наиболее подходящий тип, как указано XmlReader.ValueType свойством. Сведения о сопоставлении см. в разделе Поддержка типов в классах System.Xml .

Если элемент невозможно легко преобразовать в тип CLR из-за его формата, можно использовать сопоставление схемы для успешного преобразования. В следующем примере используется XSD-файл для преобразования hire-date элемента в xs:date тип, а затем используется ReadElementContentAsDateTime метод для возврата элемента в виде DateTime объекта.

Входные данные (hireDate.xml):

<employee xmlns="urn:empl-hire">
    <ID>12365</ID>
    <hire-date>2003-01-08</hire-date>
    <title>Accountant</title>
</employee>

Схема (hireDate. xsd):

<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:empl-hire" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="employee">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ID" type="xs:unsignedShort" />
        <xs:element name="hire-date" type="xs:date" />
        <xs:element name="title" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Приведен

// Create a validating XmlReader object. The schema
// provides the necessary type information.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add("urn:empl-hire", "hireDate.xsd");
using (XmlReader reader = XmlReader.Create("hireDate.xml", settings)) {

  // Move to the hire-date element.
  reader.MoveToContent();
  reader.ReadToDescendant("hire-date");

  // Return the hire-date as a DateTime object.
  DateTime hireDate = reader.ReadElementContentAsDateTime();
  Console.WriteLine("Six Month Review Date: {0}", hireDate.AddMonths(6));
}
' Create a validating XmlReader object. The schema 
' provides the necessary type information.
Dim settings As XmlReaderSettings = New XmlReaderSettings()
settings.ValidationType = ValidationType.Schema
settings.Schemas.Add("urn:empl-hire", "hireDate.xsd")
Using reader As XmlReader = XmlReader.Create("hireDate.xml", settings) 
  ' Move to the hire-date element.
  reader.MoveToContent()
  reader.ReadToDescendant("hire-date")

  ' Return the hire-date as a DateTime object.
  Dim hireDate As DateTime = reader.ReadElementContentAsDateTime()
  Console.WriteLine("Six Month Review Date: {0}", hireDate.AddMonths(6))
End Using

Выходные данные:

Six Month Review Date:  7/8/2003 12:00:00 AM  

Асинхронное программирование

Большинство XmlReader методов имеют асинхронные аналоги, имеющие "Async" в конце имен методов. Например, асинхронный эквивалент ReadContentAsObject имеет значение ReadContentAsObjectAsync .

С асинхронными вызовами методов можно использовать следующие методы:

В следующих разделах описывается асинхронное использование для методов, которые не имеют асинхронных аналогов.

ReadStartElement, метод

public static async Task ReadStartElementAsync(this XmlReader reader, string localname, string ns)
{
    if (await reader.MoveToContentAsync() != XmlNodeType.Element)
    {
        throw new InvalidOperationException(reader.NodeType.ToString() + " is an invalid XmlNodeType");
    }
    if ((reader.LocalName == localname) && (reader.NamespaceURI == ns))
    {
        await reader.ReadAsync();
    }
    else
    {
        throw new InvalidOperationException("localName or namespace doesn’t match");
    }
}
<Extension()>
Public Async Function ReadStartElementAsync(reader As XmlReader, localname As String, ns As String) As Task
    If (Await reader.MoveToContentAsync() <> XmlNodeType.Element) Then
        Throw New InvalidOperationException(reader.NodeType.ToString() + " is an invalid XmlNodeType")
    End If

    If ((reader.LocalName = localname) And (reader.NamespaceURI = ns)) Then
        Await reader.ReadAsync()
    Else
        Throw New InvalidOperationException("localName or namespace doesn’t match")
    End If
End Function

Метод Реаденделемент

public static async Task ReadEndElementAsync(this XmlReader reader)
{
    if (await reader.MoveToContentAsync() != XmlNodeType.EndElement)
    {
        throw new InvalidOperationException();
    }
    await reader.ReadAsync();
}
<Extension()>
Public Async Function ReadEndElementAsync(reader As XmlReader) As task
    If (Await reader.MoveToContentAsync() <> XmlNodeType.EndElement) Then
        Throw New InvalidOperationException()
    End If
    Await reader.ReadAsync()
End Function

Метод Реадтонекстсиблинг

public static async Task<bool> ReadToNextSiblingAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find the next sibling
    XmlNodeType nt;
    do
    {
        await reader.SkipAsync();
        if (reader.ReadState != ReadState.Interactive)
            break;
        nt = reader.NodeType;
        if (nt == XmlNodeType.Element &&
             ((object)localName == (object)reader.LocalName) &&
             ((object)namespaceURI ==(object)reader.NamespaceURI))
        {
            return true;
        }
    } while (nt != XmlNodeType.EndElement && !reader.EOF);
    
    return false;
}
<Extension()>
Public Async Function ReadToNextSiblingAsync(reader As XmlReader, localName As String, namespaceURI As String) As Task(Of Boolean)
    If (localName = Nothing Or localName.Length = 0) Then
        Throw New ArgumentException("localName is empty or null")
    End If

    If (namespaceURI = Nothing) Then
        Throw New ArgumentNullException("namespaceURI")
    End If

    ' atomize local name and namespace
    localName = reader.NameTable.Add(localName)
    namespaceURI = reader.NameTable.Add(namespaceURI)

    ' find the next sibling
    Dim nt As XmlNodeType
    Do

        Await reader.SkipAsync()
        If (reader.ReadState <> ReadState.Interactive) Then
            Exit Do
        End If
        nt = reader.NodeType
        If ((nt = XmlNodeType.Element) And
           ((CObj(localName) = CObj(reader.LocalName))) And
           (CObj(namespaceURI) = CObj(reader.NamespaceURI))) Then
            Return True
        End If
    Loop While (nt <> XmlNodeType.EndElement And (Not reader.EOF))

    Return False

End Function

Метод Реадтофолловинг

public static async Task<bool> ReadToFollowingAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find element with that name
    while (await reader.ReadAsync())
    {
        if (reader.NodeType == XmlNodeType.Element && ((object)localName == (object)reader.LocalName) && ((object)namespaceURI == (object)reader.NamespaceURI))
        {
            return true;
        }
    }
    return false;
}
<Extension()>
Public Async Function ReadToFollowingAsync(reader As XmlReader, localName As String, namespaceURI As String) As Task(Of Boolean)
    If (localName = Nothing Or localName.Length = 0) Then
        Throw New ArgumentException("localName is empty or null")
    End If

    If (namespaceURI = Nothing) Then
        Throw New ArgumentNullException("namespaceURI")
    End If

    ' atomize local name and namespace
    localName = reader.NameTable.Add(localName)
    namespaceURI = reader.NameTable.Add(namespaceURI)

    ' find element with that name
    While (Await reader.ReadAsync())
        If ((reader.NodeType = XmlNodeType.Element) And
           (CObj(localName) = CObj(reader.LocalName)) And
           (CObj(namespaceURI) = CObj(reader.NamespaceURI))) Then
            Return True
        End If
    End While

    Return False
End Function

Метод Реадтодесцендант

public static async Task<bool> ReadToDescendantAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }
    // save the element or root depth
    int parentDepth = reader.Depth;
    if (reader.NodeType != XmlNodeType.Element)
    {
        // adjust the depth if we are on root node
        if (reader.ReadState == ReadState.Initial)
        {
            parentDepth--;
        }
        else
        {
            return false;
        }
    }
    else if (reader.IsEmptyElement)
    {
        return false;
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find the descendant
    while (await reader.ReadAsync() && reader.Depth > parentDepth)
    {
        if (reader.NodeType == XmlNodeType.Element && ((object)localName == (object)reader.LocalName) && ((object)namespaceURI == (object)reader.NamespaceURI))
        {
            return true;
        }
    }
    return false;
}
<Extension()>
Public Async Function ReadToDescendantAsync(reader As XmlReader, localName As String, namespaceURI As String) As Task(Of Boolean)
    If (localName = Nothing Or localName.Length = 0) Then
        Throw New ArgumentException("localName is empty or null")
    End If

    If (namespaceURI = Nothing) Then
        Throw New ArgumentNullException("namespaceURI")
    End If

    ' save the element or root depth
    Dim parentDepth As Integer = reader.Depth
    If (reader.NodeType <> XmlNodeType.Element) Then
        ' adjust the depth if we are on root node
        If (reader.ReadState = ReadState.Initial) Then
            parentDepth -= 1
        Else
            Return False
        End If
    ElseIf (reader.IsEmptyElement) Then
        Return False
    End If
    ' atomize local name and namespace
    localName = reader.NameTable.Add(localName)
    namespaceURI = reader.NameTable.Add(namespaceURI)

    ' find the descendant
    While (Await reader.ReadAsync() And reader.Depth > parentDepth)
        If (reader.NodeType = XmlNodeType.Element And
           (CObj(localName) = CObj(reader.LocalName)) And
           (CObj(namespaceURI) = CObj(reader.NamespaceURI))) Then
            Return True
        End If
    End While

    Return False
End Function

Замечания по безопасности

При работе с классом учитывайте следующее XmlReader .

  • Исключения, вызываемые из, XmlReader могут раскрывать сведения о пути, которые не должны быть собраны в приложение. Приложение должно перехватывать исключения и обрабатывать их соответствующим образом.

  • Не включайте обработку DTD, если у вас возникли проблемы отказа в обслуживании или если вы работаете с ненадежными источниками. Обработка DTD отключена по умолчанию для XmlReader объектов, созданных Create методом.

    Если обработка DTD включена, то с помощью класса XmlSecureResolver можно ограничить ресурсы, доступные для объекта XmlReader. Можно также спроектировать приложение таким образом, чтобы обработка XML была ограничена памятью и временем. например, можно настроить ограничения времени ожидания в приложении ASP.NET.

  • XML-данные могут содержать ссылки на внешние ресурсы, например файл схемы. По умолчанию внешние ресурсы разрешаются с помощью XmlUrlResolver объекта без учетных данных пользователя. Это можно сделать еще более безопасным, выполнив одно из следующих действий.

  • ProcessInlineSchema ProcessSchemaLocation Флаги проверки и XmlReaderSettings объекта не задаются по умолчанию. Это позволяет защитить объект XmlReader от атак на основе схем при обработке XML-данных из ненадежного источника. Если эти флаги установлены, для разрешения расположения схем, обнаруженных в экземпляре документа в объекте XmlResolver, используется арбитр XmlReaderSettings объекта XmlReader. Если XmlResolver свойство имеет значение null , расположения схемы не разрешаются, даже если ProcessInlineSchema ProcessSchemaLocation заданы флаги проверки и.

    Схемы, добавленные во время проверки, добавляют новые типы и могут изменить результат проверки документа. Поэтому следует разрешать только внешние схемы из доверенных источников.

    Рекомендуется отключить ProcessIdentityConstraints флаг при проверке ненадежных, больших XML-документов в сценариях с высоким уровнем доступности в отношении схемы с ограничениями идентификации в большой части документа. Этот флаг включен по умолчанию.

  • XML-данные могут содержать большое количество атрибутов, деклараций пространств имен, вложенных элементов и так далее, на обработку которых требуется значительное время. Чтобы ограничить размер входных данных, которые отправляются XmlReader , можно:

    • Ограничьте размер документа, задав MaxCharactersInDocument свойство.

    • Ограничьте число символов, появляющихся в результате расширения сущностей, установив MaxCharactersFromEntities свойство.

    • Создайте пользовательскую IStream реализацию для XmlReader .

  • ReadValueChunkМетод может использоваться для управления большими потоками данных. Этот метод за раз считывает небольшое число символов, а не выделяет одну строку для всего значения.

  • При чтении XML-документа с большим количеством уникальных локальных имен, пространств имен или префиксов может возникнуть проблема. Если вы используете класс, производный от класса XmlReader , и вызываете LocalName Prefix свойство, или NamespaceURI для каждого элемента, возвращаемая строка добавляется в NameTable . Коллекция, удерживаемая объектом, NameTable никогда не уменьшается в размере, создавая утечку виртуальной памяти дескрипторов строк. Одним из способов устранения этой проблемы является наследование от NameTable класса и принудительная квота на максимальный размер. (Не существует способа предотвратить использование NameTable или переключить, NameTable когда он заполнен). Еще один способ устранения проблемы заключается в том, чтобы не использовать упомянутые свойства, а использовать MoveToAttribute метод с IsStartElement методом, где это возможно; эти методы не возвращают строки и, таким способом, избегают к проблеме переполнения NameTable коллекции.

  • Объекты XmlReaderSettings могут содержать конфиденциальные сведения, например учетные данные пользователей. Ненадежный компонент может использовать объект XmlReaderSettings и его учетные данные пользователя, чтобы создавать объекты XmlReader для считывания данных. Будьте внимательны при кэшировании XmlReaderSettings объектов или при передаче XmlReaderSettings объекта из одного компонента в другой.

  • Не следует принимать вспомогательные компоненты, например объекты NameTable, XmlNamespaceManager и XmlResolver, из ненадежных источников.

Конструкторы

XmlReader()

Инициализирует новый экземпляр класса XmlReader.

Свойства

AttributeCount

Когда переопределено в производном классе, возвращает количество атрибутов текущего узла.

BaseURI

Когда переопределено в производном классе, возвращает базовый URI текущего узла.

CanReadBinaryContent

Получает значение, указывающее, реализует ли объект XmlReader методы чтения двоичного содержимого.

CanReadValueChunk

Возвращает значение, указывающее, реализует ли объект XmlReader метод ReadValueChunk(Char[], Int32, Int32).

CanResolveEntity

Возвращает значение, определяющее, способно ли данное средство чтения выполнять синтаксический анализ и разрешение сущностей.

Depth

Когда переопределено в производном классе, возвращает глубину текущего узла в XML-документе.

EOF

Когда переопределено в производном классе, возвращает значение, показывающее, позиционировано ли средство чтения в конец потока.

HasAttributes

Возвращает значение, показывающее, имеются ли атрибуты у текущего узла.

HasValue

При переопределении в производном классе получает значение, показывающее, имеет ли текущий узел свойство Value.

IsDefault

Когда переопределено в производном классе, возвращает значение, определяющее, является ли текущий узел атрибутом, созданным из значения по умолчанию, определенного в DTD или схеме.

IsEmptyElement

При переопределении в производном классе получает значение, указывающее, является ли текущий узел пустым элементом (например, <MyElement/>).

Item[Int32]

Когда переопределено в производном классе, возвращает значение атрибута по указанному индексу.

Item[String, String]

При переопределении в производном классе получает значение атрибута с указанными свойствами LocalName и NamespaceURI.

Item[String]

При переопределении в производном классе получает значение атрибута с указанным свойством Name.

LocalName

Когда переопределено в производном классе, возвращает локальное имя текущего узла.

Name

Когда переопределено в производном классе, возвращает полное имя текущего узла.

NamespaceURI

Когда переопределено в производном классе, возвращает URI пространства имен (определенное в спецификации W3C Namespace) узла, на котором расположено средство чтения.

NameTable

При переопределении в производном классе получает класс XmlNameTable, связанный с данной реализацией.

NodeType

Когда переопределено в производном классе, возвращает тип текущего узла.

Prefix

Когда переопределено в производном классе, возвращает префикс пространства имен, связанный с текущим узлом.

QuoteChar

Когда переопределено в производном классе, возвращает знак кавычек для выделения значения узла атрибута.

ReadState

Когда переопределено в производном классе, возвращает состояние средства чтения.

SchemaInfo

Возвращает сведения схемы, которые были назначены текущему узлу в результате проверки схемы.

Settings

Получает объект XmlReaderSettings, используемый для создания данного экземпляра XmlReader.

Value

Когда переопределено в производном классе, возвращает текстовое значение текущего узла.

ValueType

Возвращает тип CLR текущего узла.

XmlLang

При переопределении в производном классе получает текущую область действия xml:lang.

XmlSpace

При переопределении в производном классе получает текущую область действия xml:space.

Методы

Close()

При переопределении в производном классе изменяет значение свойства ReadState на Closed.

Create(Stream)

Создает новый экземпляр XmlReader, используя заданный поток с параметрами по умолчанию.

Create(Stream, XmlReaderSettings)

Создает экземпляр XmlReader с указанными потоком и параметрами.

Create(Stream, XmlReaderSettings, String)

Создает новый экземпляр XmlReader с использованием указанного потока, базового URI и параметров.

Create(Stream, XmlReaderSettings, XmlParserContext)

Создает новый экземпляр XmlReader, используя заданный поток, параметры и контекстную информацию для анализа.

Create(String)

Создает новый экземпляр XmlReader с указанным URI.

Create(String, XmlReaderSettings)

Создает новый экземпляр XmlReader с использованием указанного URI и параметров.

Create(String, XmlReaderSettings, XmlParserContext)

Создает новый экземпляр XmlReader с помощью указанного URI, параметров и сведений о контексте для анализа.

Create(TextReader)

Создает экземпляр XmlReader с использованием указанного средства чтения текста.

Create(TextReader, XmlReaderSettings)

Создает новый экземпляр XmlReader с использованием указанного модуля чтения текста и параметров.

Create(TextReader, XmlReaderSettings, String)

Создает экземпляр XmlReader с использованием указанного средства чтения текста, параметров и базового кода URI.

Create(TextReader, XmlReaderSettings, XmlParserContext)

Создает новый экземпляр XmlReader с использованием указанного средства чтения текста, параметров и сведений о контексте для анализа.

Create(XmlReader, XmlReaderSettings)

Создает новый экземпляр XmlReader, используя заданное средство чтения XML и параметры.

Dispose()

Освобождает все ресурсы, используемые текущим экземпляром класса XmlReader.

Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом XmlReader, а при необходимости освобождает также управляемые ресурсы.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetAttribute(Int32)

Когда переопределено в производном классе, возвращает значение атрибута по указанному индексу.

GetAttribute(String)

При переопределении в производном классе получает значение атрибута с указанным свойством Name.

GetAttribute(String, String)

При переопределении в производном классе получает значение атрибута с указанными свойствами LocalName и NamespaceURI.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
GetValueAsync()

Асинхронно возвращает значение текущего узла.

IsName(String)

Возвращает значение, определяющее, является ли строковый аргумент допустимым именем XML.

IsNameToken(String)

Возвращает значение, определяющее, является ли строковый аргумент допустимым токеном имени XML.

IsStartElement()

Вызывает метод MoveToContent() и проверяет, является ли текущий узел содержимого открывающим тегом или пустым тегом элемента.

IsStartElement(String)

Вызывает метод MoveToContent() и проверяет, является ли текущий узел содержимого открывающим тегом или пустым тегом элемента, а также соответствует ли значение свойства Name элемента заданному аргументу.

IsStartElement(String, String)

Вызывает метод MoveToContent() и проверяет, является ли текущий узел содержимого открывающим тегом или пустым тегом элемента, а также соответствуют ли значения свойств LocalName и NamespaceURI элемента заданным строкам.

LookupNamespace(String)

Когда переопределено в производном классе, разрешает префикс пространства имен в области видимости текущего элемента.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
MoveToAttribute(Int32)

Когда переопределено в производном классе, переходит к атрибуту с указанным индексом.

MoveToAttribute(String)

При переопределении в производном классе перемещает к атрибуту с указанным Name.

MoveToAttribute(String, String)

При переопределении в производном классе перемещает к атрибуту с указанными LocalName и NamespaceURI.

MoveToContent()

Проверяет, является ли текущий узел узлом содержимого (текст без пустого пространства, CDATA, Element, EndElement, EntityReference или EndEntity). Если узел не является узлом содержимого, средство чтения пропускает этот узел и переходит к следующему узлу содержимого или в конец файла. Пропускаются узлы следующих типов: ProcessingInstruction, DocumentType, Comment, Whitespace и SignificantWhitespace.

MoveToContentAsync()

В асинхронном режиме проверяет, является ли текущий узел узлом содержимого. Если узел не является узлом содержимого, средство чтения пропускает этот узел и переходит к следующему узлу содержимого или в конец файла.

MoveToElement()

Когда переопределено в производном классе, переходит к элементу, содержащему текущий узел атрибута.

MoveToFirstAttribute()

Когда переопределено в производном классе, переходит к первому атрибуту.

MoveToNextAttribute()

Когда переопределено в производном классе, переходит к следующему атрибуту.

Read()

Когда переопределено в производном классе, считывает из потока следующий узел.

ReadAsync()

Асинхронно считывает следующий узел из потока.

ReadAttributeValue()

При переопределении в производном классе разбирает значение атрибута в один или более узлов Text, EntityReference или EndEntity.

ReadContentAs(Type, IXmlNamespaceResolver)

Считывает содержимое объекта указанного типа.

ReadContentAsAsync(Type, IXmlNamespaceResolver)

Асинхронно считывает содержимое как объект указанного типа.

ReadContentAsBase64(Byte[], Int32, Int32)

Считывает содержимое и возвращает раскодированные двоичные байты Base64.

ReadContentAsBase64Async(Byte[], Int32, Int32)

Асинхронно считывает содержимое и возвращает декодированные из кодировки Base64 двоичные байты.

ReadContentAsBinHex(Byte[], Int32, Int32)

Считывает содержимое и возвращает раскодированные двоичные байты BinHex.

ReadContentAsBinHexAsync(Byte[], Int32, Int32)

Асинхронно считывает содержимое и возвращает раскодированные двоичные байты BinHex.

ReadContentAsBoolean()

Считывает содержимое текста в текущей позиции как значение Boolean.

ReadContentAsDateTime()

Считывает содержимое текста в текущем положении как объект DateTime.

ReadContentAsDateTimeOffset()

Считывает содержимое текста в текущем положении как объект DateTimeOffset.

ReadContentAsDecimal()

Считывает содержимое текста в текущем положении как объект Decimal.

ReadContentAsDouble()

Считывает текстовое содержимое в текущей позиции как число с плавающей запятой двойной точности.

ReadContentAsFloat()

Считывает содержимое текста в текущей позиции как число с плавающей запятой одиночной точности.

ReadContentAsInt()

Считывает текстовое содержимое в текущей позиции как 32-разрядное целое число со знаком.

ReadContentAsLong()

Считывает текстовое содержимое в текущей позиции как 64-разрядное целое число со знаком.

ReadContentAsObject()

Считывает содержимое текста в текущей позиции как значение Object.

ReadContentAsObjectAsync()

Асинхронно считывает содержимое текста в текущем положении как объект Object.

ReadContentAsString()

Считывает содержимое текста в текущем положении как объект String.

ReadContentAsStringAsync()

Асинхронно считывает содержимое текста в текущем положении как объект String.

ReadElementContentAs(Type, IXmlNamespaceResolver)

Считывает содержимое элемента в качестве требуемого типа.

ReadElementContentAs(Type, IXmlNamespaceResolver, String, String)

Проверяет, совпадают ли указанные локальное имя и URI пространства имен с таковыми для текущего элемента, затем считывает содержимое элемента как требуемый тип.

ReadElementContentAsAsync(Type, IXmlNamespaceResolver)

Асинхронно считывает содержимое элемента как запрашиваемый тип.

ReadElementContentAsBase64(Byte[], Int32, Int32)

Считывает элемент и декодирует содержимое Base64.

ReadElementContentAsBase64Async(Byte[], Int32, Int32)

Асинхронно считывает элемент и расшифровывает содержимое Base64.

ReadElementContentAsBinHex(Byte[], Int32, Int32)

Считывает элемент и декодирует содержимое BinHex.

ReadElementContentAsBinHexAsync(Byte[], Int32, Int32)

Асинхронно считывает элемент и расшифровывает содержимое BinHex.

ReadElementContentAsBoolean()

Считывает текущий элемент и возвращает содержимое объекта Boolean.

ReadElementContentAsBoolean(String, String)

Проверяет соответствие указанного URI локального имени и пространства имен с URI текущего элемента, затем считывает текущий элемент и возвращает содержимое как объект Boolean.

ReadElementContentAsDateTime()

Считывает текущий элемент и возвращает содержимое объекта DateTime.

ReadElementContentAsDateTime(String, String)

Проверяет соответствие указанного URI локального имени и пространства имен с URI текущего элемента, затем считывает текущий элемент и возвращает содержимое как объект DateTime.

ReadElementContentAsDecimal()

Считывает текущий элемент и возвращает содержимое объекта Decimal.

ReadElementContentAsDecimal(String, String)

Проверяет соответствие указанного URI локального имени и пространства имен с URI текущего элемента, затем считывает текущий элемент и возвращает содержимое как объект Decimal.

ReadElementContentAsDouble()

Считывает текущий элемент и возвращает содержимое как число с плавающей запятой двойной точности.

ReadElementContentAsDouble(String, String)

Проверяет, совпадают ли указанные локальное имя и URI пространства имен с таковыми для текущего элемента, затем считывает текущий элемент и возвращает содержимое как число с плавающей запятой двойной точности.

ReadElementContentAsFloat()

Считывает текущий элемент и возвращает содержимое как число с плавающей запятой одиночной точности.

ReadElementContentAsFloat(String, String)

Проверяет, совпадают ли указанные локальное имя и URI пространства имен с таковыми для текущего элемента, затем считывает текущий элемент и возвращает содержимое как число с плавающей запятой одиночной точности.

ReadElementContentAsInt()

Считывает текущий элемент и возвращает содержимое в виде 32-разрядного целого числа со знаком.

ReadElementContentAsInt(String, String)

Проверяет, совпадают ли указанные локальное имя и URI пространства имен с таковыми для текущего элемента, затем считывает текущий элемент и возвращает содержимое как 32-разрядное целое число со знаком.

ReadElementContentAsLong()

Считывает текущий элемент и возвращает содержимое в виде 64-разрядного целого числа со знаком.

ReadElementContentAsLong(String, String)

Проверяет, совпадают ли указанные локальное имя и URI пространства имен с таковыми для текущего элемента, затем считывает текущий элемент и возвращает содержимое как 64-разрядное целое число со знаком.

ReadElementContentAsObject()

Прочитывает текущий элемент и возвращает содержимое в качестве объекта Object.

ReadElementContentAsObject(String, String)

Проверяет соответствие указанного URI локального имени и пространства имен с URI текущего элемента, затем считывает текущий элемент и возвращает содержимое как объект Object.

ReadElementContentAsObjectAsync()

Асинхронно считывает текущий элемент и возвращает содержимое как объект Object.

ReadElementContentAsString()

Считывает текущий элемент и возвращает содержимое объекта String.

ReadElementContentAsString(String, String)

Проверяет соответствие указанного URI локального имени и пространства имен с URI текущего элемента, затем считывает текущий элемент и возвращает содержимое как объект String.

ReadElementContentAsStringAsync()

Асинхронно считывает текущий элемент и возвращает содержимое как объект String.

ReadElementString()

Считывает элемент, предназначенный только для чтения. Однако рекомендуем использовать вместо этого метод ReadElementContentAsString(), предполагающий более простой способ обработки данной операции.

ReadElementString(String)

Проверяет перед чтением текстового элемента соответствие значения свойства Name найденного элемента и заданной строки. Однако рекомендуем использовать вместо этого метод ReadElementContentAsString(), предполагающий более простой способ обработки данной операции.

ReadElementString(String, String)

Проверяет перед чтением текстового элемента соответствие значений свойств LocalName и NamespaceURI найденного элемента и заданных строк. Однако рекомендуем использовать вместо этого метод ReadElementContentAsString(String, String), предполагающий более простой способ обработки данной операции.

ReadEndElement()

Проверяет, является ли текущий узел содержимого закрывающим тегом, и позиционирует средство чтения на следующий узел.

ReadInnerXml()

Когда переопределено в производном классе, считывает как строку все содержимое, включая разметку.

ReadInnerXmlAsync()

Асинхронно считывает в виде строки все содержимое, включая разметку.

ReadOuterXml()

Когда переопределено в производном классе, считывает содержимое, включая разметку, представляющую этот узел и все его дочерние узлы.

ReadOuterXmlAsync()

Асинхронно считывает содержимое, включая разметку, представляющее этот узел и все его дочерние узлы.

ReadStartElement()

Проверяет, является ли текущий узел элементом и перемещает модуль чтения к следующему узлу.

ReadStartElement(String)

Проверяет, является ли текущий узел элементом с заданным Name, и перемещает средство чтения на следующий узел.

ReadStartElement(String, String)

Проверяет, является ли текущий узел элементом с заданным LocalName и NamespaceURI, и перемещает средство чтения на следующий узел.

ReadString()

Когда переопределено в производном классе, считывает содержимое узла элемента или текстового узла в виде строки. Однако рекомендуем использовать вместо этого метод ReadElementContentAsString, предполагающий более простой способ обработки данной операции.

ReadSubtree()

Возвращает новый экземпляр XmlReader, который может использоваться для считывания текущего узла и всех его потомков.

ReadToDescendant(String)

Переводит XmlReader к следующему сопоставленному элементу-потомку с указанным проверенным именем.

ReadToDescendant(String, String)

Переводит XmlReader к следующему элементу-потомку с указанным локальным именем и URI пространства имен.

ReadToFollowing(String)

Выполняет чтение до обнаружения элемента с указанным полным именем.

ReadToFollowing(String, String)

Выполняет чтение до обнаружения указанных локального имени и URI пространства имен.

ReadToNextSibling(String)

Переводит XmlReader к следующему сопоставленному родственному элементу с указанным проверенным именем.

ReadToNextSibling(String, String)

Переводит XmlReader к следующему элементу того же уровня с указанным локальным именем и URI пространства имен.

ReadValueChunk(Char[], Int32, Int32)

Считывает большие потоки текста, внедренного в XML-документ.

ReadValueChunkAsync(Char[], Int32, Int32)

Асинхронно считывает большие потоки текста, внедренного в XML-документ.

ResolveEntity()

При переопределении в производном классе разрешает ссылки для сущностей для узлов EntityReference.

Skip()

Пропускает дочерний узел текущего узла.

SkipAsync()

Асинхронно пропускает дочерние узлы текущего узла.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

IDisposable.Dispose()

Описание этого члена см. в разделе Dispose().

Применяется к

См. также раздел