XmlTextReader.Normalization Propriedade

Definição

Obtém ou define um valor que indica se você deseja normalizar o espaço em branco e os valores de atributos.

public bool Normalization { get; set; }

Valor da propriedade

Boolean

true para normalizar; caso contrário, false. O padrão é false.

Exceções

Definir essa propriedade quando o leitor é fechado (ReadState é ReadState.Closed).

Exemplos

O exemplo a seguir mostra o comportamento do leitor com a normalização ativada e desativada.

using System;
using System.IO;
using System.Xml;

public class Sample{

  public static void Main(){

    // Create the XML fragment to be parsed.
    string xmlFrag  =
    @"<item attr1='  test A B C
        1 2 3'/>
      <item attr2=''/>";

    // Create the XmlNamespaceManager.
    XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());

    // Create the XmlParserContext.
    XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.Preserve);

    // Create the reader.
    XmlTextReader reader = new XmlTextReader(xmlFrag, XmlNodeType.Element, context);

    // Show attribute value normalization.
    reader.Read();
    reader.Normalization = false;
    Console.WriteLine("Attribute value:{0}", reader.GetAttribute("attr1"));
    reader.Normalization = true;
    Console.WriteLine("Attribute value:{0}", reader.GetAttribute("attr1"));

    // Set Normalization back to false.  This allows the reader to accept
    // character entities in the � to  range.  If Normalization had
    // been set to true, character entities in this range throw an exception.
    reader.Normalization = false;
    reader.Read();
    reader.MoveToContent();
    Console.WriteLine("Attribute value:{0}", reader.GetAttribute("attr2"));

    // Close the reader.
    reader.Close();
  }
}

Comentários

Observação

A partir do .NET Framework 2.0, recomendamos que você crie XmlReader instâncias usando o XmlReader.Create método para aproveitar a nova funcionalidade.

Essa propriedade pode ser alterada a qualquer momento e entra em vigor na próxima operação de leitura.

Observação

Se for XmlTextReader usado para construir um XmlValidatingReader, para normalizar valores de atributo, Normalization deverá ser definido como true.

Se Normalization estiver definido como, isso também desabilita a falseverificação de intervalo de caracteres para entidades numéricas. Como resultado, entidades de caractere, como &#0;, são permitidas.

O seguinte descreve a normalização do valor do atributo:

  • Para obter uma referência de caractere, acrescentar o caractere referenciado ao valor de atributo.

  • Para obter uma referência de entidade, recursivamente processar o texto de substituição de entidade.

  • Para um caractere de espaço em branco (#x20, #xD, #xA, #x9), acrescente #x20 ao valor normalizado. (Somente um único #x20 é acrescentado para uma sequência "#xD#xA" que faz parte de uma entidade analisada externa ou do valor da entidade literal de uma entidade analisada interna.)

  • Processar outros caracteres acrescentar os ao valor normalizado.

  • Se o valor declarado não for CDATA, descarte qualquer caractere de espaço à esquerda e à direita (#x20) e substitua sequências de caracteres de espaço (#x20) por um único caractere de espaço (#x20).

O XmlTextReader único executa a normalização de atributo ou CDATA. Ele não faz normalização específica do DTD, a menos que seja encapsulado em um XmlValidatingReader.

Consulte a recomendação do W3C XML 1.0 para mais discussões sobre normalização.

Aplica-se a

Confira também