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


Согласованность данных и XmlWriter

Класс XmlWriter содержит два параметра проверки согласованности. Можно установить XmlWriter, чтобы проверить согласованность данных, выводимых на запись.

Параметр CheckCharacters

При заданном свойстве XmlWriterSettings.CheckCharacters модуль записи проверяет символы и создает исключение XmlException, если обнаруживаются символы, недопустимые в XML. Если включена проверка символов, можно гарантировать, что все символы в документе являются допустимыми символами XML, определенными в рекомендации W3C по XML 1.0.

ПримечаниеПримечание

В ходе проверки не проверяется наличие недопустимых символов в XML-именах или допустимость всех XML-имен.Проверка имен является стандартной частью проверки согласованности.Дополнительные сведения см. по адресу http://www.w3.org/TR/REC-xml#NT-Name

По умолчанию проверка символов включена.

Параметр ConformanceLevel

Если задано свойство XmlWriterSettings.ConformanceLevel, объект XmlWriter проверяет соответствие записываемого потока определенному набору правил. В зависимости от указанного уровня согласованности, XML-данные можно проверять на соответствие правильному формату XML-документа 1.0 или его фрагмента. Если данные не согласованы, создается исключение XmlException или ArgumentException. Параметр по умолчанию — ConformanceLevel.Document.

ПримечаниеПримечание

Если модуль записи настроен для поддержки значения ConformanceLevel.Fragment, но XML-данные содержат DTD, модуль записи создает исключение.Рекомендация XML 1.0 требует согласованности на уровне документа, если присутствует DTD.Поэтому, если метод WriteStartDocument вызывается для модуля записи, настроенного для поддержки значения ConformanceLevel.Fragment, модуль записи также создаст исключение.

Уровень согласованности

Описание

Document

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

ПримечаниеПримечание
Модуль записи не проводит синтаксический анализ записываемых данных DTD.Обеспечение правильности формата DTD является задачей пользователя.

Fragment

XML-данные фрагмента соответствуют правильному формату XML-документа 1.0.

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

ПримечаниеПримечание
DTD в фрагментах не разрешается.

Auto

Модуль записи выбирает уровень согласованности, применяемый при проверке, на основании входных данных. Это значение может быть полезным, если неизвестно, будет ли создаваемый XML-код XML-документом правильного формата или фрагментом.

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

  • вызывается метод WriteStartDocument;

  • записываются данные DTD.

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

  • узел Text, CDATA или EntityReference на корневом уровне;

  • Более одного элемента корневого уровня.

  • Отсутствие элемента корневого уровня.

Исключение XmlException создается, если обнаруживается конфликт, например когда на корневом уровне одновременно записываются текстовый узел и DTD.

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

См. также

Другие ресурсы

Запись XML с помощью XmlWriter