XmlReaderSettings.ConformanceLevel Property

Definition

Возвращает или задает уровень соответствия для XmlReader.Gets or sets the level of conformance which the XmlReader will comply.

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

Property Value

ConformanceLevel

Одно из значений перечисления, которое указывает уровень соответствия, обеспечиваемый средством чтения XML.One of the enumeration values that specifies the level of conformance that the XML reader will enforce. Значение по умолчанию — Document.The default is Document.

Examples

В следующем примере создается объект XmlReader, который считывает фрагмент XML.The following example creates an XmlReader object that reads an XML fragment.

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)

Remarks

Средства чтения XML, созданным Create метод следующие предварительные требования соответствия по умолчанию:XML readers that are created by the Create method meet the following compliance requirements by default:

  • Новые строки и значения атрибутов нормализованы согласно рекомендациям консорциума W3C по XML 1,0.New lines and attribute value are normalized according to the W3C XML 1.0 Recommendation.

  • Все сущности разворачиваются автоматически.All entities are automatically expanded.

  • Атрибуты по умолчанию, объявленные в определении типа документа, всегда добавляются, даже если средство чтения не проверяется.Default attributes declared in the document type definition are always added even when the reader does not validate.

  • Допускается объявление префикса XML, сопоставленного с правильным URI пространства имен XML.Declaration of XML prefix mapped to the correct XML namespace URI is allowed.

  • Имена нотаций в одном NotationType объявление атрибута и NmTokens в одном Enumeration объявление атрибута отличаются.The notation names in a single NotationType attribute declaration and NmTokens in a single Enumeration attribute declaration are distinct.

Можно использовать свойство ConformanceLevel, чтобы проверить и гарантировать, что считываемый поток будет соответствовать правилам для XML 1,0-документа с правильным форматом или фрагментом документа.You can use the ConformanceLevel property to check and guarantee that the stream being read complies with the rules for a well-formed XML 1.0 document or document fragment. Если данные не соответствуют, выдается исключение XmlException.If the data doesn't comply, an XmlException exception is thrown. Значение по умолчанию — ConformanceLevel.Document (соответствие уровня документа).The default is ConformanceLevel.Document (document-level conformance).

Три уровня соответствия:The three conformance levels are:

ПараметрSetting DescriptionDescription
Document Гарантирует, что XML-данные соответствует правилам для XML-документа с правильным форматом 1,0.Ensures that the XML data conforms to the rules for a well-formed XML 1.0 document. Этот уровень проверки гарантирует, что любой процессор может использовать поток, считанный как XML-документ с правильным форматом 1,0.This level of checking ensures that any processor can consume the stream being read as an well-formed XML 1.0 document.

Модуль чтения проверяет следующие условия.The reader checks for the following:

-Элемент верхнего уровня не должен содержать узлы, кроме объявления XML, определения типа документа (DTD), элемента, комментария, пробела или инструкции по обработке.- The top-level item must not have any nodes other than XML Declaration, document type definition (DTD), element, comment, white space, or processing instruction.
— XML-данные должны содержать только один узел элемента верхнего уровня.- The XML data must have exactly one top-level element node.
Fragment Гарантирует, что XML-данные соответствует правилам для фрагмента документа XML 1,0 с правильным форматом.Ensures that the XML data conforms to the rules for a well-formed XML 1.0 document fragment.

Этот параметр принимает XML-данные с несколькими корневыми элементами или текстовыми узлами на верхнем уровне.This setting accepts XML data with multiple root elements, or text nodes at the top-level. Этот уровень проверки гарантирует, что любой процессор может использовать поток, считанный как внешняя анализируемая сущность.This level of checking ensures that any processor can consume the stream being read as an external parsed entity.
Auto Указывает, что читатель должен определить уровень проверки соответствия на основе входящих данных.Specifies that the reader should determine the level of conformance checking based on the incoming data.

Проверка согласованности на уровне документа применяется, если XML-данные содержат сведения DTD.Document conformance checking is applied if the XML data contains DTD information.

Проверка согласованности фрагментов применяется, если в XML-данных содержится один из следующих случаев:Fragment conformance checking is applied if the XML data contains one of following:

— Текстовый, CDATA или узел ссылки на сущность на корневом уровне.- Text, CDATA, or entity reference node at the root level.
— Более одного элемента на корневом уровне.- More than one element at the root level.
— Отсутствует элемент на корневом уровне.- No element at the root level.

Исключение XmlException создается, если обнаруживается конфликт, например если на корневом уровне одновременно существуют текстовый узел и DTD.An XmlException is thrown if there is a conflict, such as when there is a text node and a DTD at the root level.

Это свойство можно использовать в сценариях с оболочками, когда метод Create используется для добавления дополнительных функций в существующий модуль XmlReader.This setting can be used in wrapping scenarios when the Create method is used to add additional features to an existing XmlReader. В этом случае ConformanceLevel.Document не добавляет новую проверку соответствия.In this case, ConformanceLevel.Document does not add any new conformance checking. Проверка согласованности выполняется модулем XmlReader, для которого создается оболочка.Conformance checking is left to the XmlReader that is being wrapped.

Note

Рекомендация XML 1.0 требует согласованности на уровне документа, если присутствует DTD.The XML 1.0 recommendation requires document-level conformance when a DTD is present. Таким образом, если средство чтения настроено для поддержки ConformanceLevel.Fragment, но XML-данные содержат определение типа документа (DTD), выдается XmlException.Therefore, if the reader is configured to support ConformanceLevel.Fragment, but the XML data contains a document type definition (DTD), an XmlException is thrown.

Ниже показано, как средство чтения обрабатывает определенные нарушения соответствия в зависимости от значения свойства ConformanceLevel.Here's how the reader handles specific conformance violations depending on the setting of the ConformanceLevel property:

УсловиеCondition Document Fragment Auto
Текст или типизированное значение отображается на верхнем уровне.Text or a typed value appears at the top level. выдается XmlException.XmlException is thrown. Не считается нарушением для этого параметра.Not considered a violation for this setting. Не считается нарушением для этого параметра.Not considered a violation for this setting.
На верхнем уровне не отображаются несколько элементов или элементов.Multiple elements or no element appear at the top level. выдается XmlException.XmlException is thrown. Не считается нарушением для этого параметра.Not considered a violation for this setting. Не считается нарушением для этого параметра.Not considered a violation for this setting.
Элемент верхнего уровня является пробелом.Top-level item is white space. Не считается нарушением для этого параметра.Not considered a violation for this setting. Не считается нарушением для этого параметра.Not considered a violation for this setting. Не считается нарушением для этого параметра.Not considered a violation for this setting.
Элемент верхнего уровня — это атрибут (распознается как текстовый узел).Top-level item is an attribute (recognized as a text node). выдается XmlException.XmlException is thrown. Не считается нарушением для этого параметра.Not considered a violation for this setting. Не считается нарушением для этого параметра.Not considered a violation for this setting.
Найдены несколько смежных текстовых узлов.Multiple, contiguous text nodes are found. Не считается нарушением для этого параметра.Not considered a violation for this setting. Не считается нарушением для этого параметра.Not considered a violation for this setting. Не считается нарушением для этого параметра.Not considered a violation for this setting.
Один и тот же префикс пространства имен объявляется дважды в одной локальной области.The same namespace prefix is declared twice in the same local scope. выдается XmlException.XmlException is thrown. выдается XmlException.XmlException is thrown. выдается XmlException.XmlException is thrown.
Пространство имен в элементе или атрибуте не существует в локальной области.The namespace in an element or attribute doesn't exist in the local scope. выдается XmlException.XmlException is thrown. выдается XmlException.XmlException is thrown. выдается XmlException.XmlException is thrown.
Данные содержат несоответствие префикса и пространства имен.Data contains a prefix-namespace mismatch. выдается XmlException.XmlException is thrown. выдается XmlException.XmlException is thrown. выдается XmlException.XmlException is thrown.
атрибут xml:space содержит недопустимое значение.xml:space attribute contains an invalid value. выдается XmlException.XmlException is thrown. выдается XmlException.XmlException is thrown. выдается XmlException.XmlException is thrown.
Обнаружено недопустимое имя.An invalid name is encountered. выдается XmlException.XmlException is thrown. выдается XmlException.XmlException is thrown. выдается XmlException.XmlException is thrown.
Префикс xml не соответствует URI http://www.w3.org/XML/1998/namespace.The xml prefix isn't matched to the http://www.w3.org/XML/1998/namespace URI. выдается XmlException.XmlException is thrown. выдается XmlException.XmlException is thrown. выдается XmlException.XmlException is thrown.

Applies to

See also