XmlReaderSettings.ConformanceLevel Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Obtém ou definem o nível de conformidade com o qual a XmlReader vontade de 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 de Propriedade
Um dos valores de enumeração que especifica o nível de conformidade que o leitor XML irá aplicar. A predefinição é Document.
Exemplos
O exemplo seguinte 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)
Observações
Os leitores XML criados pelo método Create atendem aos seguintes requisitos de conformidade por padrão:
Novas linhas e valor de atributo são normalizados de acordo com a Recomendação W3C XML 1.0.
Todas as entidades são expandidas automaticamente.
Os atributos padrão declarados na definição do tipo de documento são sempre adicionados mesmo quando o leitor não valida.
É permitida a declaração do prefixo XML mapeado para o URI do namespace XML correto.
Os nomes de notação em uma única declaração de atributo
NotationTypeeNmTokensem uma única declaração de atributoEnumerationsão distintos.
Pode usar a ConformanceLevel propriedade para verificar e garantir que o fluxo a ser lido cumpre as regras para um documento ou fragmento de documento XML 1.0 bem formado. Se os dados não cumprirem, é lançada uma XmlException exceção. O padrão é ConformanceLevel.Document (conformidade ao nível do documento).
Os três níveis de conformidade são:
| Definição | Descrição |
|---|---|
| Document | Assegura que os dados XML cumprem as regras para um documento XML 1.0 bem estruturado. Este nível de verificação garante que qualquer processador pode consumir o fluxo a ser lido como um documento XML 1.0 bem formado. O leitor verifica o seguinte: - O item de topo não deve ter nós além de Declaração XML, definição de tipo de documento (DTD), elemento, comentário, espaço em branco ou instrução de processamento. - Os dados XML devem ter exatamente um nó elemento de topo. |
| Fragment | Assegura que os dados XML cumprem as regras para um fragmento de documento XML 1.0 bem formado. Esta configuração aceita dados XML com múltiplos elementos raiz, ou nós de texto ao nível superior. Este nível de verificação garante que qualquer processador pode consumir o fluxo que está a ser lido como uma entidade externa analisada. |
| Auto | Especifica que o leitor deve determinar o nível de verificação de conformidade com base nos dados recebidos. A verificação de conformidade do documento é aplicada se os dados XML conterem informação DTD. A verificação de conformidade com fragmentos é aplicada se os dados XML conterem um dos seguintes: - Texto, CDATA ou nó de referência de entidade ao nível raiz. - Mais do que um elemento ao nível da raiz. - Nenhum elemento ao nível raiz. Um XmlException é lançado se houver um conflito, como quando existe um nó de texto e um DTD ao nível raiz. Esta configuração pode ser usada em cenários de wrapping quando o Create método é usado para adicionar funcionalidades adicionais a um .XmlReader Neste caso, ConformanceLevel.Document não adiciona nenhuma nova verificação de conformidade. A verificação de conformidade fica a cargo do XmlReader que está a ser enrolado. |
Note
A recomendação XML 1.0 exige conformidade ao nível do documento quando existe um DTD. Portanto, se o leitor estiver configurado para suportar ConformanceLevel.Fragment, mas os dados XML contiverem uma definição de tipo de documento (DTD), uma XmlException será lançada.
Eis como o leitor lida com violações específicas de conformidade dependendo do contexto da ConformanceLevel propriedade:
| Condition | Document | Fragment | Auto |
|---|---|---|---|
| O texto ou um valor digitado aparece no nível superior. | XmlException é lançado. | Não é considerado uma violação para esta configuração. | Não é considerado uma violação para esta configuração. |
| Vários elementos ou nenhum elemento aparecem no nível superior. | XmlException é lançado. | Não é considerado uma violação para esta configuração. | Não é considerado uma violação para esta configuração. |
| O item de topo é o espaço em branco. | Não é considerado uma violação para esta configuração. | Não é considerado uma violação para esta configuração. | Não é considerado uma violação para esta configuração. |
| O item de topo é um atributo (reconhecido como um nó de texto). | XmlException é lançado. | Não é considerado uma violação para esta configuração. | Não é considerado uma violação para esta configuração. |
| São encontrados múltiplos nós de texto contíguos. | Não é considerado uma violação para esta configuração. | Não é considerado uma violação para esta configuração. | Não é considerado uma violação para esta configuração. |
| O mesmo prefixo de espaço de nomes é declarado duas vezes no mesmo âmbito local. | XmlException é lançado. | XmlException é lançado. | XmlException é lançado. |
| O namespace num elemento ou atributo não existe no âmbito local. | XmlException é lançado. | XmlException é lançado. | XmlException é lançado. |
| Os dados contêm uma incompatibilidade entre prefixo e espaço de nomes. | 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. |
| Encontra-se um nome inválido. | XmlException é lançado. | XmlException é lançado. | XmlException é lançado. |
O xml prefixo não está correspondido ao http://www.w3.org/XML/1998/namespace URI. |
XmlException é lançado. | XmlException é lançado. | XmlException é lançado. |