Поделиться через


XmlReaderSettings.ConformanceLevel Свойство

Определение

Возвращает или задает уровень соответствия, с которым будет соответствовать.XmlReader

public:
 property System::Xml::ConformanceLevel ConformanceLevel { System::Xml::ConformanceLevel get(); void set(System::Xml::ConformanceLevel value); };
public System.Xml.ConformanceLevel ConformanceLevel { get; set; }
member this.ConformanceLevel : System.Xml.ConformanceLevel with get, set
Public Property ConformanceLevel As ConformanceLevel

Значение свойства

Одно из значений перечисления, указывающее уровень соответствия, который будет применять модуль чтения XML. Значение по умолчанию — Document.

Примеры

В следующем примере создается XmlReader объект, считывающий фрагмент XML.

string xmlFrag ="<item rk:ID='abc-23'>hammer</item> " +
                        "<item rk:ID='r2-435'>paint</item>" +
                        "<item rk:ID='abc-39'>saw</item>";

// Create the XmlNamespaceManager.
NameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
nsmgr.AddNamespace("rk", "urn:store-items");

// Create the XmlParserContext.
XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);

// Create the reader.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader reader = XmlReader.Create(new StringReader(xmlFrag), settings, context);
Dim xmlFrag As String = "<item rk:ID='abc-23'>hammer</item> " & _
                                     "<item rk:ID='r2-435'>paint</item>" & _
                                     "<item rk:ID='abc-39'>saw</item>"

' Create the XmlNamespaceManager.
Dim nt As New NameTable()
Dim nsmgr As New XmlNamespaceManager(nt)
nsmgr.AddNamespace("rk", "urn:store-items")

' Create the XmlParserContext.
Dim context As New XmlParserContext(Nothing, nsmgr, Nothing, XmlSpace.None)

' Create the reader. 
Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
Dim reader As XmlReader = XmlReader.Create(New StringReader(xmlFrag), settings, context)

Комментарии

Средства чтения XML, созданные методом Create , соответствуют следующим требованиям соответствия по умолчанию:

  • Новые строки и значение атрибута нормализуются в соответствии с рекомендацией W3C XML 1.0.

  • Все сущности автоматически развернуты.

  • Атрибуты по умолчанию, объявленные в определении типа документа, всегда добавляются, даже если средство чтения не проверяет.

  • Объявление префикса XML, сопоставленного с правильным URI пространства имен XML, разрешено.

  • Имена нотации в одном NotationType объявлении атрибута и NmTokens в одном Enumeration объявлении атрибута отличаются.

Свойство можно использовать ConformanceLevel для проверки и гарантии того, что поток считывается в соответствии с правилами для хорошо сформированного XML-документа или фрагмента документа. Если данные не соответствуют требованиям, XmlException создается исключение. Значение по умолчанию — ConformanceLevel.Document соответствие на уровне документа.

Ниже приведены три уровня соответствия:

Setting Описание
Document Гарантирует, что XML-данные соответствуют правилам документа XML 1.0. Этот уровень проверки гарантирует, что любой процессор может использовать поток, считываемый как хорошо сформированный XML-документ 1.0.

Средство чтения проверяет следующее:

— Элемент верхнего уровня не должен содержать узлов, отличных от объявления XML, определения типа документа (DTD), элемента, комментария, пробела или инструкции по обработке.
— XML-данные должны иметь ровно один узел элемента верхнего уровня.
Fragment Гарантирует, что XML-данные соответствуют правилам фрагмента документа XML 1.0.

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

Проверка соответствия документа применяется, если XML-данные содержат данные DTD.

Проверка соответствия фрагментов применяется, если XML-данные содержат одно из следующих значений:

— Текстовый узел, CDATA или узел ссылки на сущности на корневом уровне.
— Несколько элементов на корневом уровне.
— элемент на корневом уровне отсутствует.

Возникает XmlException при возникновении конфликта, например при наличии текстового узла и DTD на корневом уровне.

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

Замечание

Для рекомендации XML 1.0 требуется соответствие на уровне документа при наличии DTD. Поэтому, если средство чтения настроено для поддержки ConformanceLevel.Fragment, но XML-данные содержат определение типа документа (DTD), выбрасывается XmlException.

Вот как средство чтения обрабатывает определенные нарушения соответствия в зависимости от параметра ConformanceLevel свойства:

Состояние Document Fragment Auto
Текст или типизированное значение отображается на верхнем уровне. XmlException вызывается. Не считается нарушением этого параметра. Не считается нарушением этого параметра.
Несколько элементов или нет элемента на верхнем уровне. XmlException вызывается. Не считается нарушением этого параметра. Не считается нарушением этого параметра.
Элемент верхнего уровня — это пробелы. Не считается нарушением этого параметра. Не считается нарушением этого параметра. Не считается нарушением этого параметра.
Элемент верхнего уровня — это атрибут (распознанный как текстовый узел). XmlException вызывается. Не считается нарушением этого параметра. Не считается нарушением этого параметра.
Найдены несколько смежных текстовых узлов. Не считается нарушением этого параметра. Не считается нарушением этого параметра. Не считается нарушением этого параметра.
Один и тот же префикс пространства имен объявляется дважды в одной локальной области. XmlException вызывается. XmlException вызывается. XmlException вызывается.
Пространство имен в элементе или атрибуте не существует в локальной области. XmlException вызывается. XmlException вызывается. XmlException вызывается.
Данные содержат несоответствие пространства имен префикса. XmlException вызывается. XmlException вызывается. XmlException вызывается.
xml:space атрибут содержит недопустимое значение. XmlException вызывается. XmlException вызывается. XmlException вызывается.
Обнаружено недопустимое имя. XmlException вызывается. XmlException вызывается. XmlException вызывается.
Префикс xml не соответствует http://www.w3.org/XML/1998/namespace URI. XmlException вызывается. XmlException вызывается. XmlException вызывается.

Применяется к

См. также раздел