XmlReaderSettings.ConformanceLevel Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define o nível de conformidade com o qual o 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
Um dos valores de enumeração que especifica o nível de conformidade que o leitor XML imporá. 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 criados pelo Create método atendem aos seguintes requisitos de conformidade por padrão:
As novas linhas e o valor do atributo são normalizados de acordo com a recomendação W3C XML 1.0.
Todas as entidades são expandidas automaticamente.
Atributos padrão declarados na definição de tipo de documento são sempre adicionados mesmo quando o leitor não valida.
A declaração de prefixo XML mapeada para o URI do namespace XML correto é permitida.
Os nomes de notação em uma única
NotationTypedeclaração de atributo eNmTokensem uma únicaEnumerationdeclaração de atributo são distintos.
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ções | 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. O leitor verifica o seguinte: - O item de nível superior não deve ter nenhum nó diferente da Declaração XML, DTD (definição de tipo de documento), elemento, comentário, espaço em branco ou 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 raiz ou nós de texto no 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. A verificação de conformidade do documento será aplicada se os dados XML contiverem informações de DTD. A verificação de conformidade de fragmento será aplicada se os dados XML contiverem 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. Um XmlException será gerado se houver um conflito, como quando há um nó de texto e um DTD no nível raiz. Essa configuração pode ser usada em cenários de encapsulamento quando o Create método é usado para adicionar recursos adicionais a um existente XmlReader. Nesse caso, ConformanceLevel.Document não adiciona nenhuma nova verificação de conformidade. A verificação de conformidade é deixada para o XmlReader que está sendo encapsulado. |
Observação
A recomendação XML 1.0 requer conformidade no nível do documento quando um DTD está presente. Portanto, se o leitor estiver configurado para dar suporte ConformanceLevel.Fragment, mas os dados XML contiverem uma DTD (definição de tipo de documento), um XmlException será gerado.
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çado. | 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çado. | 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. |
| Item de nível superior é um atributo (reconhecido como um nó de texto). | XmlException é lançado. | Não considerado uma violação para essa configuração. | Não considerado uma violação para essa configuração. |
| Vários nós de texto contíguos são encontrados. | 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çado. | XmlException é lançado. | XmlException é lançado. |
| O namespace em um elemento ou atributo não existe no escopo local. | XmlException é lançado. | XmlException é lançado. | XmlException é lançado. |
| Os dados contêm uma incompatibilidade de prefixo-namespace. | XmlException é lançado. | XmlException é lançado. | XmlException é lançado. |
xml:space O atributo contém um valor inválido. |
XmlException é lançado. | XmlException é lançado. | XmlException é lançado. |
| Um nome inválido é encontrado. | XmlException é lançado. | XmlException é lançado. | XmlException é lançado. |
O xml prefixo não corresponde ao http://www.w3.org/XML/1998/namespace URI. |
XmlException é lançado. | XmlException é lançado. | XmlException é lançado. |