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 вызывается. |