Методы System.XmlReader.Create

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

Create Большинство перегрузок включают settings параметр, принимаюющий XmlReaderSettings объект. Этот объект можно использовать для:

  • Укажите, какие функции вы хотите поддерживать в объекте XmlReader .
  • Повторно используйте XmlReaderSettings объект для создания нескольких читателей. Можно использовать те же настройки для создания нескольких объектов средства чтения с одинаковой функциональностью. Кроме того, можно изменить параметры экземпляра XmlReaderSettings и создать новое средство чтения с другим набором функций.
  • Добавьте функции в существующий модуль чтения XML. Метод Create может принимать другой объект XmlReader. Базовый XmlReader объект может быть определяемым пользователем средством чтения, XmlTextReader объектом или другим XmlReader экземпляром, в который требуется добавить дополнительные функции.
  • Воспользуйтесь всеми преимуществами таких функций, как улучшение соответствия проверка и соответствие рекомендациям XML 1.0 (четвертый выпуск), которые доступны только для XmlReader объектов, созданных статическим Create методом.

Примечание.

Хотя .NET включает конкретные реализации XmlReader класса, такие как XmlTextReaderXmlNodeReader, и XmlValidatingReader классы, рекомендуется создавать XmlReader экземпляры с помощью Create метода.

Параметры по умолчанию

Если вы используете перегрузку Create , которая не принимает XmlReaderSettings объект, используются следующие параметры чтения по умолчанию:

Параметр По умолчанию
CheckCharacters true
ConformanceLevel ConformanceLevel.Document
IgnoreComments false
IgnoreProcessingInstructions false
IgnoreWhitespace false
LineNumberOffset 0
LinePositionOffset 0
NameTable null
DtdProcessing Prohibit
Schemas Пустой объект XmlSchemaSet
ValidationFlags ProcessIdentityConstraints Включен
ValidationType None
XmlResolver null

Руководство по распространенным сценариям

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

Требование Set
Данные должны быть хорошо сформированным XML-документом. ConformanceLevel изменено на Document.
Данные должны быть хорошо сформированными сущностями XML-анализа. ConformanceLevel изменено на Fragment.
Данные должны быть проверены на основе DTD. DtdProcessing...Parse
ValidationType изменено на DTD.
Данные должны быть проверены на основе схемы XML. ValidationType...Schema
SchemasXmlSchemaSet для проверки. Обратите внимание, что XmlReader не поддерживает проверку схемы xml-данных (XDR).
Данные должны быть проверены на основе встроенной XML-схемы. ValidationType...Schema
ValidationFlags изменено на ProcessInlineSchema.
Поддержка типов. ValidationType...Schema
SchemasXmlSchemaSet для использования.

XmlReader не поддерживает проверку схемы XML-Data Reduced (XDR).

Асинхронное программирование

В синхронном режиме Create метод считывает первый блок данных из буфера файла, потока или средства чтения текста. Это может вызвать исключение, если операция ввода-вывода завершается сбоем. В асинхронном режиме первая операция ввода-вывода возникает с операцией чтения, поэтому исключения, возникающие при выполнении операции чтения.

Вопросы безопасности

По умолчанию XmlReaderXmlUrlResolver объект без учетных данных пользователя используется для открытия ресурсов. Это означает, что по умолчанию средство чтения XML может получить доступ к любому расположению, которое не требует учетных данных. XmlResolver Используйте свойство для управления доступом к ресурсам:

  • Задайте для XmlResolverXmlSecureResolver объекта ограничение ресурсов, к которым может получить доступ средство чтения XML, или...
  • Установите для XmlResolvernull предотвращения открытия внешних ресурсов средства чтения XML.

Примеры

В этом примере создается средство чтения XML, которое удаляет незначительные пробелы, полосы комментариев и выполняет соответствие на уровне фрагментов проверка.

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

В следующем примере используются XmlUrlResolver учетные данные по умолчанию для доступа к файлу.

// Set the reader settings.
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;
settings.IgnoreProcessingInstructions = true;
settings.IgnoreWhitespace = true;
' Set the reader settings.
Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.IgnoreComments = true
settings.IgnoreProcessingInstructions = true
settings.IgnoreWhitespace = true
// Create a resolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Set the reader settings object to use the resolver.
settings.XmlResolver = resolver;

// Create the XmlReader object.
XmlReader reader = XmlReader.Create("http://ServerName/data/books.xml", settings);
' Create a resolver with default credentials.
Dim resolver as XmlUrlResolver = new XmlUrlResolver()
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials

' Set the reader settings object to use the resolver.
settings.XmlResolver = resolver

' Create the XmlReader object.
Dim reader as XmlReader = XmlReader.Create("http://ServerName/data/books.xml", 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 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)

В этом примере средства чтения цепочек для добавления проверки схемы DTD и XML.

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
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