Согласованность данных и 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-документом правильного формата или фрагментом. Проверка согласованности на уровне документа применяется в следующих случаях:
Проверка согласованности фрагментов применяется, если в XML-данных содержится один из следующих случаев:
Исключение XmlException создается, если обнаруживается конфликт, например когда на корневом уровне одновременно записываются текстовый узел и DTD. Это свойство можно использовать в сценариях с оболочками, когда метод Create используется для добавления дополнительных функций в существующий модуль записи. В этом случае значение ConformanceLevel.Auto не вызывает дополнительную проверку согласованности. Проверка согласованности выполняется модулем записи, для которого создается оболочка. |