Чтение типизированных данных

Обновлен: November 2007

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

Если XML-данные не имеют связанной с ними схемы или сведений о типе, класс XmlReader пытается преобразовать значение узла в заданный тип CLR. Например, если вызывается метод ReadContentAsBoolean, модуль чтения пытается преобразовать текст в объект Boolean.

Класс XmlReader использует правила, определенные в статье Рекомендации W3C по схеме XML. Часть 2. Типы данных (на английском языке).

Типизированное содержимое

Методы ReadContentAsBoolean, ReadContentAsDateTime, ReadContentAsDouble, ReadContentAsLong, ReadContentAsInt и ReadContentAsString используются для возвращения указанного объекта CLR. Они считывают текстовое содержимое в текущей позиции модуля чтения и преобразуют его в необходимый возвращаемый тип. Текст, пробелы, значимые пробелы и разделы CDATA объединяются. Комментарии и инструкции по обработке пропускаются, автоматически разрешаются ссылки на сущности.

Метод ReadContentAs используется для считывания текстового содержимого и возвращения объекта заданного типа.

Метод ReadContentAsObject возвращает упакованный объект CLR наиболее подходящего типа, указанного свойством ValueType. Если содержимое не типизировано, средство чтения возвращает его в виде строки.

После вызова любого метода ReadContentAs модуль чтения позиционируется на следующем узле Element или EndElement.

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

Тип узла XML

Возвращаемое значение

Поведение модуля чтения

Текст

CDATA

Whitespace

SignificantWhitespace

EntityReference

EndEntity

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

Перемещается к следующему тегу начального или конечного элемента. Ссылки на сущности автоматически раскрываются.

Атрибут

Тот же, что и XmlConvert.ToXXX в значении атрибута.

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

Комментарий

ProcessingInstruction

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

Перемещается к следующему тегу начального или конечного элемента. Ссылки на сущности автоматически раскрываются.

EndElement

Пустая строка.

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

Element

XmlDeclaration

None

Document

DocumentType

Notation

Entity

DocumentFragment

Возникает исключение InvalidOperationException.

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

Типизированное содержимое элемента

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

Методы ReadElementContentAsBoolean, ReadElementContentAsDateTime, ReadElementContentAsDouble, ReadElementContentAsLong, ReadElementContentAsInt и ReadElementContentAsString считывают содержимое элемента и возвращают заданный объект CLR.

Метод ReadElementContentAs используется для считывания содержимого элемента и возвращения объекта заданного типа.

Метод ReadElementContentAsObject возвращает упакованный объект CLR наиболее подходящего типа, указанного свойством ValueType. В разделе Сопоставление типов XML-данных с типами CLR описывается, как класс XmlReader определяет наиболее подходящий тип CLR. Если содержимое не типизировано, средство чтения возвращает его в виде строки.

См. также

Основные понятия

Чтение XML с помощью XmlReader

Как считать типизированные данные с помощью сопоставления схем

Как считать типизированные данные без сопоставления схем

Сопоставление типов XML-данных с типами CLR