XmlWriterSettings.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 em relação ao qual o gravador de XML verifica a saída XML.
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 especificam o nível de conformidade (documento, fragmento ou detecção automática). O padrão é Document.
Exemplos
O exemplo a seguir grava um fragmento XML em um fluxo de memória.
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.CloseOutput = false;
// Create the XmlWriter object and write some content.
MemoryStream strm = new MemoryStream();
XmlWriter writer = XmlWriter.Create(strm, settings);
writer.WriteElementString("orderID", "1-456-ab");
writer.WriteElementString("orderID", "2-36-00a");
writer.Flush();
writer.Close();
// Do additional processing on the stream.
Dim settings As XmlWriterSettings = New XmlWriterSettings()
settings.OmitXmlDeclaration = true
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.CloseOutput = false
' Create the XmlWriter object and write some content.
Dim strm as MemoryStream = new MemoryStream()
Dim writer As XmlWriter = XmlWriter.Create(strm, settings)
writer.WriteElementString("orderID", "1-456-ab")
writer.WriteElementString("orderID", "2-36-00a")
writer.Flush()
writer.Close()
' Do additional processing on the stream.
Comentários
A XmlWriterSettings.ConformanceLevel propriedade configura o gravador XML para verificar e garantir que o fluxo que está sendo gravado esteja em conformidade com um determinado conjunto de regras. Os dados XML podem ser verificados para ver se estão em conformidade com as regras para um documento XML 1.0 bem formado ou um fragmento de documento. A tabela a seguir descreve as três configurações. O padrão é a conformidade no nível do documento.
Configuração | Descrição |
---|---|
Document | Garante que a saída XML esteja em conformidade com as regras de um documento XML 1.0 bem formado e possa ser processada por qualquer processador em conformidade. As verificações de conformidade do documento incluem a maioria das verificações no nível do fragmento e também garantem o seguinte: - O item de nível superior não tem nenhum nó que não seja Declaração XML, DTD, elemento, comentário, espaço em branco ou instrução de processamento. - Os dados XML têm apenas um nó de elemento de nível superior. O gravador XML não analisa as informações de DTD gravadas. O usuário é responsável por garantir que o DTD esteja bem formado. |
Fragment | Garante que a saída XML esteja em conformidade com as regras de um fragmento de documento XML 1.0 bem formado. Essa configuração aceita dados XML que têm vários elementos raiz ou nós de texto no nível superior. Este nível de verificação assegura que todo o processador possa receber o fluxo que está sendo como Entidade analisada externo XML 1,0ler. As informações de DTD não são permitidas em fragmentos de documento. |
Auto | Especifica que o gravador XML deve determinar o nível de verificação de conformidade com base nos dados de entrada. Essa configuração pode ser útil quando você não sabe se o XML gerado será um documento XML bem formado ou um fragmento. Verificação de compatibilidade de documento é aplicado nos seguintes casos: - Se o WriteStartDocument método for chamado. - Se as informações de DTD forem gravadas. A verificação de conformidade de fragmentos será aplicada se os dados XML contiverem um destes: - Nó Text, CDATA ou EntityReference 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 você tentar gravar um nó de texto e um DTD no nível raiz. Se você estiver encapsulando outro XmlWriter objeto, o objeto externo não fará nenhuma verificação de conformidade adicional; isso será deixado para o objeto subjacente. |
Se o gravador XML detectar qualquer informação que viole o nível de conformidade especificado, ele gerará uma exceção. Em alguns casos, o gravador XML corrige automaticamente o erro de conformidade. Por exemplo, o gravador fecha um atributo não revelado sem gerar uma exceção. A tabela a seguir mostra como várias violações de conformidade são tratadas em cada configuração.
Condição | Document | Fragment | Auto |
---|---|---|---|
As informações de DTD foram encontradas. | Não é uma violação para essa configuração. No entanto, o gravador XML não verifica o DTD; o usuário deve garantir que o DTD esteja bem formado. | XmlException é lançado. | A verificação de conformidade do documento é aplicada. |
WriteStartDocument é chamado. | Não considerado uma violação para essa configuração. | XmlException é lançado. | A verificação de conformidade do documento é aplicada. |
WriteStartDocument é chamado várias vezes. | XmlException é lançado. | XmlException é lançado. | XmlException é lançado. |
Um valor de texto aparece no nível superior (não abaixo de um elemento ou nó de atributo). | XmlException é lançado. | Não considerado uma violação. | Verificação de compatibilidade de fragmento é aplicado. |
Vários elementos ou nenhum elemento aparecem no nível superior. | XmlException é lançado. | Não considerado uma violação. | Verificação de compatibilidade de fragmento é aplicado. |
O item de nível superior é espaço em branco. | Não considerado uma violação. | Não considerado uma violação. | Não considerado uma violação. |
WriteEndAttribute não é chamado para encerrar um nó de atributo. | Corrigido pelo gravador XML. | Corrigido pelo gravador XML. | Corrigido pelo gravador XML. |
O gravador XML está em um estado aninhado incorretamente (por exemplo, uma WriteStartElement chamada é seguida por um WriteEndAttribute). | XmlException é lançado. | XmlException é lançado. | XmlException é lançado. |
O item de nível superior é um atributo. | XmlException é lançado. | XmlException é lançado. | XmlException é lançado. |
Várias, nós contíguos de texto for encontrado. | Não considerado uma violação, mas é responsabilidade do usuário concatenar os nós de texto. | Não considerado uma violação, mas é responsabilidade do usuário concatenar os nós de texto. | Não considerado uma violação, mas é responsabilidade do usuário concatenar os nós de texto. |
O mesmo prefixo de namespace é declarada duas vezes em um elemento. | O gravador XML gera um novo prefixo para o segundo namespace. | O gravador XML gera um novo prefixo para o segundo namespace. | O gravador XML gera um novo prefixo para o segundo namespace. |
WriteStartElement especifica um prefixo e um namespace que não é declarado dentro desse escopo ou o prefixo está associado a um namespace diferente. | O gravador XML grava o nó de namespace necessário. | O gravador XML grava o nó de namespace necessário. | O gravador XML grava o nó de namespace necessário. |
WriteStartAttribute especifica um prefixo e um namespace que não é declarado dentro desse escopo. | O gravador XML grava o nó de namespace necessário. | O gravador XML grava o nó de namespace necessário. | O gravador XML grava o nó de namespace necessário. |
WriteStartAttribute especifica um prefixo e um namespace, mas o prefixo está associado a um namespace no escopo diferente. | O gravador XML ignora o prefixo especificado e pesquisa o prefixo correto ou gera um novo prefixo. | O gravador XML ignora o prefixo especificado e pesquisa o prefixo correto ou gera um novo prefixo. | O gravador XML ignora o prefixo especificado e pesquisa o prefixo correto ou gera um novo prefixo. |
WriteQualifiedName é usado para gravar o conteúdo do elemento usando um namespace que não existe dentro do escopo. | XmlException é lançado. | XmlException é lançado. | XmlException é lançado. |
WriteQualifiedName é usado para gravar conteúdo de atributo usando um namespace que não existe dentro do escopo. | O gravador XML grava a declaração de namespace necessária. | O gravador XML grava a declaração de namespace necessária. | O gravador XML grava a declaração de namespace necessária. |
O xml:space atributo não contém um valor válido. |
XmlException é lançado. | XmlException é lançado. | XmlException é lançado. |
Um nome inválido é localizado. | XmlException é lançado. | XmlException é lançado. | XmlException é lançado. |
O xml prefixo não corresponde a um URI. |
O gravador XML não verifica esse tipo de violação. | O gravador XML não verifica esse tipo de violação. | O gravador XML não verifica esse tipo de violação. |
O xml prefixo não corresponde ao http://www.w3.org/XML/1998/namespace URI. |
XmlException é lançado. | XmlException é lançado. | XmlException é lançado. |
O xmlns prefixo ou o nome local não corresponde a um URI. |
O gravador XML não verifica esse tipo de violação. | O gravador XML não verifica esse tipo de violação. | O gravador XML não verifica esse tipo de violação. |
O xmlns prefixo ou o nome local não corresponde ao http://www.w3.org/2000/xmlns URI. |
XmlException é lançado. | XmlException é lançado. | XmlException é lançado. |