Создание средств чтения XML
Экземпляры XmlReader создаются с помощью метода Create.Класс XmlReaderSettings используется для задания набора функций, которые нужно включить для объекта XmlReader.
Важно!
Хотя платформа 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.
Свойство |
Значение по умолчанию |
---|---|
true |
|
ConformanceLevel.Document |
|
false |
|
false |
|
false |
|
0. |
|
0 |
|
null |
|
true.Данное свойство вышло из употребления.Взамен рекомендуется использовать DtdProcessing. |
|
Пустой объект XmlSchemaSet |
|
ProcessIdentityConstraints включен |
|
ValidationType.None |
|
Новый объект XmlUrlResolver |
Сценарии XmlReader
В следующей таблице описаны некоторые типовые сценарии и применяемые настройки класса XmlReaderSettings.
Сценарий |
XmlReaderSettings |
---|---|
Данные должны быть представлены XML-документом правильного формата. |
ConformanceLevel = ConformanceLevel.Document |
Данные должны представлять проанализированную сущность XML-документа правильного формата. |
ConformanceLevel = ConformanceLevel.Fragment |
Данные необходимо проверить на соответствие DTD. |
DtdProcessing = DtdProcessing.Parse 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.
Примечание
Класс 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