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


XmlWriterSettings.ConformanceLevel Свойство

Определение

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

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

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

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

Примеры

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

XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.CloseOutput = false;

// Create the XmlWriter object and write some content.
MemoryStream strm = new MemoryStream();
XmlWriter writer = XmlWriter.Create(strm, settings);
writer.WriteElementString("orderID", "1-456-ab");
writer.WriteElementString("orderID", "2-36-00a");
writer.Flush();
writer.Close();

// Do additional processing on the stream.
Dim settings As XmlWriterSettings = New XmlWriterSettings()
settings.OmitXmlDeclaration = true
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.CloseOutput = false

' Create the XmlWriter object and write some content.
Dim strm as MemoryStream = new MemoryStream()
Dim writer As XmlWriter = XmlWriter.Create(strm, settings)
writer.WriteElementString("orderID", "1-456-ab")
writer.WriteElementString("orderID", "2-36-00a")
writer.Flush()
writer.Close()

' Do additional processing on the stream.

Комментарии

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

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

Проверки соответствия документа включают большую часть проверок уровня фрагмента, а также гарантируют следующее:

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

Модуль записи XML не анализирует данные DTD, записанные. Пользователь отвечает за то, что DTD хорошо сформирован.
Fragment Гарантирует, что выходные данные XML соответствуют правилам фрагмента документа XML 1.0.

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

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

Проверка соответствия документа применяется в следующих случаях:

— Если WriteStartDocument метод вызывается.
— Если данные DTD записываются.

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

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

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

Если вы упаковываете другой XmlWriter объект, внешний объект не выполняет никаких дополнительных проверок соответствия; он остается базовому объекту.

Если модуль записи XML обнаруживает любые сведения, которые будут нарушать указанный уровень соответствия, он создает исключение. В некоторых случаях модуль записи XML автоматически исправляет ошибку соответствия. Например, модуль записи закрывает незакрытый атрибут без исключения. В следующей таблице показано, как обрабатываются различные нарушения соответствия в каждом параметре.

Состояние Document Fragment Auto
Обнаружена информация DTD. Не является нарушением этого параметра. Однако модуль записи XML не проверяет DTD; Пользователь должен убедиться, что DTD хорошо сформирован. XmlException вызывается. Применяется проверка соответствия документа.
WriteStartDocument вызывается. Не считается нарушением этого параметра. XmlException вызывается. Применяется проверка соответствия документа.
WriteStartDocument вызывается несколько раз. XmlException вызывается. XmlException вызывается. XmlException вызывается.
Текстовое значение отображается на верхнем уровне (не ниже элемента или узла атрибута). XmlException вызывается. Не считается нарушением. Применяется проверка соответствия фрагмента.
Несколько элементов или нет элементов на верхнем уровне. XmlException вызывается. Не считается нарушением. Применяется проверка соответствия фрагмента.
Элемент верхнего уровня — это пробелы. Не считается нарушением. Не считается нарушением. Не считается нарушением.
WriteEndAttribute не вызывается для завершения узла атрибута. Исправлено средством записи XML. Исправлено средством записи XML. Исправлено средством записи XML.
Модуль записи XML находится в неправильно вложенном состоянии (например, WriteStartElement за вызовом следует значение WriteEndAttribute). XmlException вызывается. XmlException вызывается. XmlException вызывается.
Элемент верхнего уровня — это атрибут. XmlException вызывается. XmlException вызывается. XmlException вызывается.
Найдены несколько смежных текстовых узлов. Не считается нарушением, но это ответственность пользователя за объединение текстовых узлов. Не считается нарушением, но это ответственность пользователя за объединение текстовых узлов. Не считается нарушением, но это ответственность пользователя за объединение текстовых узлов.
Один и тот же префикс пространства имен объявляется дважды в элементе. Модуль записи XML создает новый префикс для второго пространства имен. Модуль записи XML создает новый префикс для второго пространства имен. Модуль записи XML создает новый префикс для второго пространства имен.
WriteStartElement указывает префикс и пространство имен, не объявленное в этой области, или префикс связан с другим пространством имен. Модуль записи XML записывает необходимый узел пространства имен. Модуль записи XML записывает необходимый узел пространства имен. Модуль записи XML записывает необходимый узел пространства имен.
WriteStartAttribute указывает префикс и пространство имен, которое не объявлено в этой области. Модуль записи XML записывает необходимый узел пространства имен. Модуль записи XML записывает необходимый узел пространства имен. Модуль записи XML записывает необходимый узел пространства имен.
WriteStartAttribute задает префикс и пространство имен, но префикс связан с другим пространством имен в области. Модуль записи XML игнорирует указанный префикс и ищет правильный префикс или создает новый префикс. Модуль записи XML игнорирует указанный префикс и ищет правильный префикс или создает новый префикс. Модуль записи XML игнорирует указанный префикс и ищет правильный префикс или создает новый префикс.
WriteQualifiedName используется для записи содержимого элемента с помощью пространства имен, которое не существует в области. XmlException вызывается. XmlException вызывается. XmlException вызывается.
WriteQualifiedName используется для записи содержимого атрибута с помощью пространства имен, которое не существует в области. Модуль записи XML записывает необходимое объявление пространства имен. Модуль записи XML записывает необходимое объявление пространства имен. Модуль записи XML записывает необходимое объявление пространства имен.
Атрибут xml:space не содержит допустимого значения. XmlException вызывается. XmlException вызывается. XmlException вызывается.
Обнаружено недопустимое имя. XmlException вызывается. XmlException вызывается. XmlException вызывается.
Префикс xml не соответствует URI. Модуль записи XML не проверяет наличие этого типа нарушения. Модуль записи XML не проверяет наличие этого типа нарушения. Модуль записи XML не проверяет наличие этого типа нарушения.
Префикс xml не соответствует http://www.w3.org/XML/1998/namespace URI. XmlException вызывается. XmlException вызывается. XmlException вызывается.
Префикс или локальное xmlns имя не совпадает с универсальным кодом ресурса (URI). Модуль записи XML не проверяет наличие этого типа нарушения. Модуль записи XML не проверяет наличие этого типа нарушения. Модуль записи XML не проверяет наличие этого типа нарушения.
Префикс или локальное xmlns имя не совпадает с универсальным http://www.w3.org/2000/xmlns кодом ресурса (URI). XmlException вызывается. XmlException вызывается. XmlException вызывается.

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