XmlTextReader.Normalization Propriedade

Definição

Recebe ou define um valor que indica se deve normalizar espaços em branco e valores de atributos.

public:
 property bool Normalization { bool get(); void set(bool value); };
public bool Normalization { get; set; }
member this.Normalization : bool with get, set
Public Property Normalization As Boolean

Valor de Propriedade

true normalizar; caso contrário, false. A predefinição é false.

Exceções

Definir esta propriedade quando o leitor está fechado (ReadState é ReadState.Closed).

Exemplos

O exemplo seguinte mostra o comportamento do leitor com a normalização ativada e depois desligada.

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();
  }
}
Imports System.IO
Imports System.Xml

public class Sample

  public shared sub Main()

    ' Create the XML fragment to be parsed.
    Dim xmlFrag as string = "<item attr1='  test A B C " + Chr(10) & _
                            "   1 2 3'/>" + Chr(10) & _
                            "<item attr2=''/>"
                    

    ' Create the XmlNamespaceManager.
    Dim nsmgr as XmlNamespaceManager = new XmlNamespaceManager(new NameTable())

    ' Create the XmlParserContext.
    Dim context as XmlParserContext = new XmlParserContext(nothing, nsmgr, nothing, XmlSpace.Preserve)

    ' Create the reader.
    Dim reader as XmlTextReader = 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()     
  
  end sub
end class

Observações

Note

Recomendamos que crie instâncias XmlReader usando o método XmlReader.Create para aproveitar a nova funcionalidade.

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

Note

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

Se Normalization for definido como false, isto também desativa a verificação de intervalo de caracteres para entidades numéricas. Como resultado, entidades de personagem, como &#0;, são permitidas.

O seguinte descreve a normalização dos valores dos atributos:

  • Para uma referência de carácter, acrescente o carácter referenciado ao valor do atributo.

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

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

  • Processa outros caracteres acrescentando-os ao valor normalizado.

  • Se o valor declarado não for CDATA, descarte quaisquer caracteres de espaço inicial e final (#x20) e substitua as sequências de caracteres de espaço (#x20) por um único carácter de espaço (#x20).

O XmlTextReader único executa a normalização de atributos ou CDATA. Não faz normalização específica para DTD a menos que esteja envolvida dentro de um XmlValidatingReader.

Consulte a recomendação do W3C XML 1.0 para uma discussão adicional sobre normalização.

Aplica-se a

Ver também