XmlReaderSettings.ConformanceLevel Propriedade

Definição

Obtém ou define o nível de conformidade que o XmlReader cumprirá.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

Valor da propriedade

ConformanceLevel

Um dos valores de enumeração que especifica o nível de conformidade que será imposto pelo leitor de XML.One of the enumeration values that specifies the level of conformance that the XML reader will enforce. O padrão é Document.The default is Document.

Exemplos

O exemplo a seguir cria um XmlReader objeto que lê um fragmento 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)

Comentários

Os leitores XML que são criados pelo Create método cumprir os seguintes requisitos de conformidade por padrão:XML readers that are created by the Create method meet the following compliance requirements by default:

  • Novas linhas e o valor de atributo são normalizados de acordo com o W3C recomendação XML 1.0.New lines and attribute value are normalized according to the W3C XML 1.0 Recommendation.

  • Todas as entidades são expandidas automaticamente.All entities are automatically expanded.

  • Atributos padrão declarados na definição de tipo de documento são sempre adicionados mesmo quando o leitor não é validado.Default attributes declared in the document type definition are always added even when the reader does not validate.

  • A declaração do prefixo XML mapeado para o URI de namespace XML correto é permitida.Declaration of XML prefix mapped to the correct XML namespace URI is allowed.

  • Os nomes de notação em uma única NotationType declaração de atributo e NmTokens em uma única Enumeration declaração de atributo são diferentes.The notation names in a single NotationType attribute declaration and NmTokens in a single Enumeration attribute declaration are distinct.

Você pode usar a ConformanceLevel propriedade para verificar e garantir que o fluxo que está sendo lido esteja em conformidade com as regras para um documento XML 1,0 bem formado ou fragmento de documento.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. Se os dados não estiverem em conformidade, uma XmlException exceção será lançada.If the data doesn't comply, an XmlException exception is thrown. O padrão é ConformanceLevel.Document (conformidade em nível de documento).The default is ConformanceLevel.Document (document-level conformance).

Os três níveis de conformidade são:The three conformance levels are:

ConfiguraçãoSetting DescriçãoDescription
Document Garante que os dados XML estejam em conformidade com as regras para um documento XML 1,0 bem formado.Ensures that the XML data conforms to the rules for a well-formed XML 1.0 document. Esse nível de verificação garante que qualquer processador possa consumir o fluxo sendo lido como um documento XML 1,0 bem formado.This level of checking ensures that any processor can consume the stream being read as an well-formed XML 1.0 document.

As verificações do leitor para o seguinte:The reader checks for the following:

-O item de nível superior não deve ter nenhum outro nó além da declaração XML, definição de tipo de documento (DTD), elemento, comentário, espaço em branco ou instrução de processamento.- The top-level item must not have any nodes other than XML Declaration, document type definition (DTD), element, comment, white space, or processing instruction.
-Os dados XML devem ter exatamente um nó de elemento de nível superior.- The XML data must have exactly one top-level element node.
Fragment Garante que os dados XML estejam em conformidade com as regras para um fragmento de documento XML 1,0 bem formado.Ensures that the XML data conforms to the rules for a well-formed XML 1.0 document fragment.

Essa configuração aceita dados XML com vários elementos de raiz, ou nós de texto no de nível superior.This setting accepts XML data with multiple root elements, or text nodes at the top-level. Esse nível de verificação garante que qualquer processador possa consumir o fluxo que está sendo lido como uma entidade analisada externa.This level of checking ensures that any processor can consume the stream being read as an external parsed entity.
Auto Especifica que o leitor deve determinar o nível de verificação de conformidade com base nos dados de entrada.Specifies that the reader should determine the level of conformance checking based on the incoming data.

Verificação de compatibilidade do documento é aplicado se os dados XML contêm informações de DTD.Document conformance checking is applied if the XML data contains DTD information.

Verificação de compatibilidade de fragmento é aplicado se os dados XML contêm um dos seguintes:Fragment conformance checking is applied if the XML data contains one of following:

-Texto, CDATA ou nó de referência de entidade no nível raiz.- Text, CDATA, or entity reference node at the root level.
-Mais de um elemento no nível raiz.- More than one element at the root level.
-Nenhum elemento no nível raiz.- No element at the root level.

XmlException é lançada se houver um conflito, como quando há um nó de texto e um DTD no nível raiz.An XmlException is thrown if there is a conflict, such as when there is a text node and a DTD at the root level.

Esta configuração pode ser usada em envolver cenários quando o método de Create é usado para adicionar recursos adicionais a XmlReaderexistente.This setting can be used in wrapping scenarios when the Create method is used to add additional features to an existing XmlReader. Nesse caso, ConformanceLevel.Document o não adiciona nenhuma nova verificação de conformidade.In this case, ConformanceLevel.Document does not add any new conformance checking. Verificação de compatibilidade é deixado em XmlReader que está sendo empacotado.Conformance checking is left to the XmlReader that is being wrapped.

Observação

A recomendação XML 1,0 requer compatibilidade de um documento nível quando um DTD presente.The XML 1.0 recommendation requires document-level conformance when a DTD is present. Portanto, se o leitor está configurado para suportar ConformanceLevel.Fragment, mas os dados XML contêm um document type definition (DTD), um XmlException é gerada.Therefore, if the reader is configured to support ConformanceLevel.Fragment, but the XML data contains a document type definition (DTD), an XmlException is thrown.

Veja como o leitor trata as violações de conformidade específicas dependendo da configuração da ConformanceLevel Propriedade:Here's how the reader handles specific conformance violations depending on the setting of the ConformanceLevel property:

CondiçãoCondition Document Fragment Auto
O texto ou um valor digitado aparece no nível superior.Text or a typed value appears at the top level. XmlException é lançada.XmlException is thrown. Não é considerada uma violação para essa configuração.Not considered a violation for this setting. Não é considerada uma violação para essa configuração.Not considered a violation for this setting.
Vários elementos ou nenhum elemento aparece no nível superior.Multiple elements or no element appear at the top level. XmlException é lançada.XmlException is thrown. Não é considerada uma violação para essa configuração.Not considered a violation for this setting. Não é considerada uma violação para essa configuração.Not considered a violation for this setting.
O item de nível superior é um espaço em branco.Top-level item is white space. Não é considerada uma violação para essa configuração.Not considered a violation for this setting. Não é considerada uma violação para essa configuração.Not considered a violation for this setting. Não é considerada uma violação para essa configuração.Not considered a violation for this setting.
O item de nível superior é um atributo (reconhecido como um nó de texto).Top-level item is an attribute (recognized as a text node). XmlException é lançada.XmlException is thrown. Não é considerada uma violação para essa configuração.Not considered a violation for this setting. Não é considerada uma violação para essa configuração.Not considered a violation for this setting.
Várias, nós contíguos de texto for encontrado.Multiple, contiguous text nodes are found. Não é considerada uma violação para essa configuração.Not considered a violation for this setting. Não é considerada uma violação para essa configuração.Not considered a violation for this setting. Não é considerada uma violação para essa configuração.Not considered a violation for this setting.
O mesmo prefixo de namespace é declarado duas vezes no mesmo escopo local.The same namespace prefix is declared twice in the same local scope. XmlException é lançada.XmlException is thrown. XmlException é lançada.XmlException is thrown. XmlException é lançada.XmlException is thrown.
O namespace em um elemento ou atributo não existe no escopo local.The namespace in an element or attribute doesn't exist in the local scope. XmlException é lançada.XmlException is thrown. XmlException é lançada.XmlException is thrown. XmlException é lançada.XmlException is thrown.
Os dados contêm uma incompatibilidade de namespace de prefixo.Data contains a prefix-namespace mismatch. XmlException é lançada.XmlException is thrown. XmlException é lançada.XmlException is thrown. XmlException é lançada.XmlException is thrown.
xml:space o atributo contém um valor inválido.xml:space attribute contains an invalid value. XmlException é lançada.XmlException is thrown. XmlException é lançada.XmlException is thrown. XmlException é lançada.XmlException is thrown.
Um nome inválido é localizado.An invalid name is encountered. XmlException é lançada.XmlException is thrown. XmlException é lançada.XmlException is thrown. XmlException é lançada.XmlException is thrown.
O xml prefixo não corresponde ao http://www.w3.org/XML/1998/namespace URI.The xml prefix isn't matched to the http://www.w3.org/XML/1998/namespace URI. XmlException é lançada.XmlException is thrown. XmlException é lançada.XmlException is thrown. XmlException é lançada.XmlException is thrown.

Aplica-se a

Confira também