Чтение XML-данных с помощью XmlTextReader

Обновлен: November 2007

Класс XmlTextReader является реализацией XmlReader и предоставляет средство синтаксического анализа для XML-текста. Он соблюдает правила для XML-кода правильного формата. Он не использует DTD и сведения схемы, и поэтому его нельзя отнести ни к средствам синтаксического анализа, ни к средствам анализа без проверки. Он может считывать текст блоками или считывать символы из потока.

tfz3cz6w.alert_note(ru-ru,VS.90).gifПримечание.

В .NET Framework, версия 2.0 рекомендованной практикой является создание экземпляров XmlReader с помощью класса XmlReaderSettings и метода Create. Это позволяет полностью использовать преимущества всех новых функций .NET Framework 2.0. Дополнительные сведения см. в разделе Создание средств чтения XML.

Общие сведения

XmlTextReader обеспечивает следующие функциональные возможности:

  • Соблюдает правила для XML-кода правильного формата.

  • Проверяет правильность формата DTD. Однако DTD не используется для проверки или добавления атрибутов по умолчанию. DTD используется для раскрытия сущности, если свойство EntityHandling имеет значение ExpandEntities, а также если метод ResolveEntity вызывается для узла EntityReference.

  • Возвращает неразвернутые ссылки на сущности в виде узлов EntityReference, если свойство EntityHandling имеет значение ExpandCharEntities (используется по умолчанию). Если ссылка на сущность не определена в DTD, модуль чтения не выдает ошибку, пока для узла не вызывается метод ResolveEntity.

  • Предоставляет возможность отключить нормализацию XML для новых строк и значений атрибутов. По умолчанию нормализация отключена.

  • Проверка по DTD и по схемам не выполняется.

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

Объект XmlTextReader может считывать данные из различных входных объектов, таких как поток, TextReader и URL-адрес, указывающий расположение локального файла или веб-узла.

Объект XmlTextReader использует модуль XmlResolver для поиска внешних ресурсов, например DTD, и может проверять правильность формата DTD. Дополнительные сведения об объекте XmlResolver см. в разделе Разрешение ресурсов с помощью XmlResolver.

Декларация кодировки <?xml version="1.0" encoding="ISO-8859-5"?> содержит атрибут encoding, который задает кодировку для документа. Класс XmlTextReader имеет свойство Encoding, которое возвращает кодировку, обнаруженную в атрибуте encoding XML-декларации. Если атрибут encoding не найден, по умолчанию для документа устанавливается кодировка UTF-8 или UTF-16 в зависимости от первых двух байт потока.

Если считывается внешний ресурс, например DTD, используемый для развертывания ссылки на сущность, или файл схемы, то кодировка устанавливается в значение кодировки, обнаруженное во внешней ссылке. Если во внешней ссылке не найдена кодировка, по умолчанию используется UTF-8 или UTF-16. Класс XmlTextReader поддерживает множество кодировок, поскольку он использует класс Encoding. Поэтому все кодировки, поддерживаемые этим классом, также поддерживаются классом XmlTextReader. Не поддерживаются только кодировки, в которых последовательность <?xml сопоставляется с другими байтовыми значениями по сравнению с UTF-8, в том числе UTF-7 и EBCDIC.

См. также

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

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

Другие ресурсы

Использование класса XmlReader