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

Обновлен: November 2007

Экземпляры XmlReader создаются с помощью метода Create. Класс XmlReaderSettings используется для задания набора функций, которые нужно включить для объекта XmlReader.

9khb6435.alert_caution(ru-ru,VS.90).gifВажное примечание.

Хотя платформа Microsoft .NET Framework располагает конкретными реализациями класса XmlReader, такими как классы XmlTextReader, XmlNodeReader и XmlValidatingReader, в .NET Framework version 2.0 рекомендуется создавать экземпляры XmlReader с помощью метода Create.

Функции включаются или отключаются с помощью свойств класса XmlReaderSettings. Объект XmlReaderSettings затем передается в метод Create.

Использование метода Create и класса XmlReaderSettings дает следующие преимущества:

  • Можно указать, какие возможности нужно поддерживать в создаваемом объекте XmlReader.

  • Для создания нескольких объектов средства чтения можно повторно использовать класс XmlReaderSettings. Можно использовать те же настройки для создания нескольких объектов средства чтения с одинаковой функциональностью. Или можно изменить объект XmlReaderSettings и создать новое средство чтения с другим набором функций.

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

  • Полностью используйте преимущества всех новых функций, добавленных в класс XmlReader в версии .NET Framework 2.0. Существуют определенные функции, такие как улучшенная проверка согласованности и соответствия рекомендациям XML 1.0, которые доступны только для объектов XmlReader, созданных методом Create.

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

Свойство

Значение по умолчанию

CheckCharacters

true

ConformanceLevel

ConformanceLevel.Document

IgnoreComments

false

IgnoreProcessingInstructions

false

IgnoreWhitespace

false

LineNumberOffset

0.

LinePositionOffset

0

NameTable

null

ProhibitDtd

true

Schemas

Пустой объект XmlSchemaSet

ValidationFlags

ProcessIdentityConstraints включен

ValidationType

ValidationType.None

XmlResolver

Новый объект XmlUrlResolver

Сценарии XmlReader

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

Сценарий

XmlReaderSettings

Данные должны быть представлены XML-документом правильного формата.

ConformanceLevel = ConformanceLevel.Document

Данные должны представлять проанализированную сущность XML-документа правильного формата.

ConformanceLevel = ConformanceLevel.Fragment

Данные необходимо проверить на соответствие DTD.

ProhibitDtd = false

ValidationType = ValidationType.DTD

Данные необходимо проверить на соответствие схеме XML.

ValidationType = ValidationType.Schema

Schemas = XmlSchemaSet для использования при проверке

Данные необходимо проверить на соответствие встроенной схеме XML.

ValidationType = ValidationType.Schema

ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema

Необходима поддержка типов.

ValidationType = ValidationType.Schema

Schemas = XmlSchemaSet для использования

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

  • Если нужно выполнить проверку на соответствие схеме XDR, следует использовать класс XmlValidatingReader.
9khb6435.alert_note(ru-ru,VS.90).gifПримечание.

Класс XmlValidatingReader устарел в версии .NET Framework 2.0. Рекомендуется рассмотреть возможность перехода на схемы XML и выполнить проверку с помощью объекта XmlReader, возвращенного методом Create.

  • Чтобы считать XML-данные из объекта XmlNode, используйте класс XmlNodeReader.

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

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

Создание экземпляра объекта XmlReader

Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.IgnoreWhitespace = true
settings.IgnoreComments = true
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create("books.xml", settings);

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

Dim txtReader As XmlTextReader = New XmlTextReader("bookOrder.xml")
Dim settings As New XmlReaderSettings()
settings.Schemas.Add("urn:po-schema", "PO.xsd")
settings.ValidationType = ValidationType.Schema
Dim reader As XmlReader = XmlReader.Create(txtReader, settings)
XmlTextReader txtReader = new XmlTextReader("bookOrder.xml");
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("urn:po-schema", "PO.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader reader = XmlReader.Create(txtReader, settings);

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

Dim settings As New XmlReaderSettings()
settings.ValidationType = ValidationType.DTD
Dim inner As XmlReader = XmlReader.Create("book.xml", settings) ' DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd")
settings.ValidationType = ValidationType.Schema
Dim outer As XmlReader = XmlReader.Create(inner, settings)  ' XML Schema Validation
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.DTD;
XmlReader inner = XmlReader.Create("book.xml", settings); // DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader outer = XmlReader.Create(inner, settings);  // XML Schema Validation

См. также

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

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