Новые возможности класса XmlReader
Обновлен: November 2007
В платформе Microsoft .NET Framework версии 2.0 в класс XmlReader внесено множество конструктивных и функциональных изменений.
Создание XmlReader
В этой версии метод Create является предпочтительным механизмом для получения экземпляров XmlReader. Метод Create использует класс XmlReaderSettings для указания возможностей, которые должен поддерживать экземпляр XmlReader.
Дополнительные сведения см. в разделе Создание средств чтения XML;
Проверка данных
Объекты XmlReader, создаваемые методом Create, могут применять проверку с помощью DTD или схемы XSD. Свойство XmlReaderSettings.ValidationType определяет, применяется ли проверка в экземпляре XmlReader. Свойство XmlReaderSettings.ValidationFlags задает дополнительные параметры проверки. Класс XmlSchemaSet используется для кэширования схем XML.
Примечание. |
---|
Классы XmlValidatingReader и XmlSchemaCollection являются устаревшими в версии платформы NET Framework 2.0. |
Дополнительные сведения см. в разделе Проверка XML-данных с помощью XmlReader.
Согласованность данных
Объекты XmlReader, создаваемые методом Create, по умолчанию более согласованы, чем реализация XmlTextReader. Объекты XmlReader, создаваемые методом Create, по умолчанию поддерживают следующие возможности:
Нормализация символов перевода строки.
Раскрытие сущностей.
Добавление атрибутов по умолчанию.
Свойства XmlReaderSettings.CheckCharacters и XmlReaderSettings.ConformanceLevel позволяют указать тип проверок согласованности, которые следует включить в созданном объекте XmlReader. Дополнительные сведения см. в разделе Проверка согласованности данных с помощью XmlReader.
Поддержка типов
Обеспечивает поддержку получения сведений схемы XSD и позволяет вызывающим объектам запрашивать значения среды CLR.
Методы ReadContentAs и ReadElementContentAs могут считывать содержимое в виде системных типов, а не в виде строк. Эти новые методы дают пользователям возможность получать значения в таком представлении, которое лучше всего подходит для задач написания кода, и устраняют необходимость выполнять синтаксический анализ и преобразование значений вручную.
Дополнительные сведения см. в разделе Чтение типизированных данных.
Новые вспомогательные методы
Класс XmlReader содержит новые методы, которые упрощают синтаксический анализ XML-данных:
ReadSubtree — возвращает новый экземпляр XmlReader, который считывает текущий элемент и все его потомки;
ReadToDescendant — переводит модуль чтения в следующий дочерний элемент, соответствующий заданному имени;
ReadToNextSibling — переводит модуль чтения в следующий одноуровневый элемент, соответствующий заданному имени;
ReadToFollowing — переводит модуль чтения в следующий элемент, соответствующий заданному имени;
ReadValueChunk — считывает большие потоки текста, внедренного в XML-документ, используя операции с потоками;
ReadContentAsBase64 и ReadElementContentAsBase64 — считывают большие потоки двоичных данных, внедренных в XML-документ, используя операции с потоками, и декодируют содержимое Base64.
ReadContentAsBinHex и ReadElementContentAsBinHex — считывают большие потоки двоичных данных, внедренных в XML-документ, используя операции с потоками, и декодируют содержимое BinHex.
Функции безопасности
Можно создать объект XmlReader, который будет блокировать обработку DTD. Отключение обработки DTD может быть полезным для предотвращения некоторых разновидностей атак типа «отказ в обслуживании». Если обработка DTD отключена, объект XmlReader создает исключение XmlException, когда обнаруживается любое содержимое DTD. По умолчанию обработка DTD отключена. Чтобы включить обработку DTD, установите свойство XmlReaderSettings.ProhibitDtd в значение false перед созданием объекта XmlReader.
Примечание. |
---|
Свойство ProhibitDtd также доступно в классе XmlTextReader. |
Обработка сущностей
Объекты XmlReader, созданные методом Create, автоматически разворачивают все сущности. Если обнаруживаются сущности, которые не удается разрешить, создается исключение.