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-документа или фрагмента документа XML 1.0. Если данные не соответствуют требованиям, XmlException создается исключение. Значение по умолчанию — ConformanceLevel.Document (соответствие на уровне документа).
Ниже приведены три уровня соответствия:
Параметр | Описание: |
---|---|
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 возникает исключение. |