Partilhar via


XmlReaderSettings.ConformanceLevel Propriedade

Definição

Obtém ou define o nível de conformidade que o XmlReader cumprirá.

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. O padrão é Document.

Exemplos

O exemplo a seguir cria um XmlReader objeto que lê um fragmento XML.

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:

  • Novas linhas e o valor de atributo são normalizados de acordo com o W3C recomendação XML 1.0.

  • Todas as entidades são expandidas automaticamente.

  • Atributos padrão declarados na definição de tipo de documento sempre são adicionados mesmo quando o leitor não valida.

  • A declaração de prefixo XML mapeada para o URI de namespace XML correto é permitida.

  • 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.

Você pode usar a ConformanceLevel propriedade para verificar e garantir que o fluxo que está sendo lido esteja em conformidade com as regras de um documento ou fragmento de documento XML 1.0 bem formado. Se os dados não estiverem em conformidade, uma exceção XmlException será gerada. O padrão é ConformanceLevel.Document (conformidade no nível do documento).

Os três níveis de conformidade são:

Configuração Descrição
Document Garante que os dados XML estejam em conformidade com as regras de um documento XML 1.0 bem formado. Esse nível de verificação garante que qualquer processador possa consumir o fluxo que está sendo lido como um documento XML 1.0 bem formado.

As verificações do leitor para o seguinte:

- O item de nível superior não deve ter nenhum nó que não seja a Declaração XML, a definição de tipo de documento (DTD), o elemento, o comentário, o espaço em branco ou a instrução de processamento.
- Os dados XML devem ter exatamente um nó de elemento de nível superior.
Fragment Garante que os dados XML estejam em conformidade com as regras de um fragmento de documento XML 1.0 bem formado.

Essa configuração aceita dados XML com vários elementos de raiz, ou nós de texto no de nível superior. Esse nível de verificação garante que qualquer processador possa consumir o fluxo que está sendo lido como uma entidade analisada externa.
Auto Especifica que o leitor deve determinar o nível de verificação de conformidade com base nos dados de entrada.

Verificação de compatibilidade do documento é aplicado se os dados XML contêm informações de DTD.

Verificação de compatibilidade de fragmento é aplicado se os dados XML contêm um dos seguintes:

- Nó de referência de texto, CDATA ou entidade no nível raiz.
- Mais de um elemento no nível raiz.
- Nenhum elemento no nível raiz.

XmlException é lançada se houver um conflito, como quando há um nó de texto e um DTD no nível raiz.

Esta configuração pode ser usada em envolver cenários quando o método de Create é usado para adicionar recursos adicionais a XmlReaderexistente. Nesse caso, ConformanceLevel.Document não adiciona nenhuma nova verificação de conformidade. Verificação de compatibilidade é deixado em XmlReader que está sendo empacotado.

Observação

A recomendação XML 1,0 requer compatibilidade de um documento nível quando um DTD presente. Portanto, se o leitor está configurado para suportar ConformanceLevel.Fragment, mas os dados XML contêm um document type definition (DTD), um XmlException é gerada.

Veja como o leitor lida com violações de conformidade específicas, dependendo da configuração da ConformanceLevel propriedade:

Condição Document Fragment Auto
O texto ou um valor tipado aparece no nível superior. XmlException é lançada. Não considerado uma violação para essa configuração. Não considerado uma violação para essa configuração.
Vários elementos ou nenhum elemento aparecem no nível superior. XmlException é lançada. Não considerado uma violação para essa configuração. Não considerado uma violação para essa configuração.
O item de nível superior é espaço em branco. Não considerado uma violação para essa configuração. Não considerado uma violação para essa configuração. Não considerado uma violação para essa configuração.
O item de nível superior é um atributo (reconhecido como um nó de texto). XmlException é lançada. Não considerado uma violação para essa configuração. Não considerado uma violação para essa configuração.
Várias, nós contíguos de texto for encontrado. Não considerado uma violação para essa configuração. Não considerado uma violação para essa configuração. Não considerado uma violação para essa configuração.
O mesmo prefixo de namespace é declarado duas vezes no mesmo escopo local. XmlException é lançada. XmlException é lançada. XmlException é lançada.
O namespace em um elemento ou atributo não existe no escopo local. XmlException é lançada. XmlException é lançada. XmlException é lançada.
Os dados contêm uma incompatibilidade de prefixo-namespace. XmlException é lançada. XmlException é lançada. XmlException é lançada.
xml:space O atributo contém um valor inválido. XmlException é lançada. XmlException é lançada. XmlException é lançada.
Um nome inválido é localizado. XmlException é lançada. XmlException é lançada. XmlException é lançada.
O xml prefixo não corresponde ao http://www.w3.org/XML/1998/namespace URI. XmlException é lançada. XmlException é lançada. XmlException é lançada.

Aplica-se a

Confira também