XmlTextReader.Normalization Propiedad

Definición

Obtiene o establece un valor que indica si se normalizan los valores de espacio en blanco y atributo.

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 propiedad

true para normalizar; de lo contrario, false. El valor predeterminado es false.

Excepciones

Establecer esta propiedad cuando se cierra el lector (ReadState es ReadState.Closed).

Ejemplos

En el ejemplo siguiente se muestra el comportamiento del lector con la normalización activada y, a continuación, desactivada.

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

Comentarios

Note

Se recomienda crear XmlReader instancias mediante el XmlReader.Create método para aprovechar las nuevas funcionalidades.

Esta propiedad se puede cambiar en cualquier momento y surte efecto en la siguiente operación de lectura.

Note

XmlTextReader Si se usa para construir un XmlValidatingReader, para normalizar los valores de atributo, Normalization debe establecerse en true.

Si Normalization se establece falseen , esto también deshabilita la comprobación del intervalo de caracteres para las entidades numéricas. Como resultado, se permiten entidades de caracteres, como &#0;, .

A continuación se describe la normalización del valor de atributo:

  • Para una referencia de caracteres, anexe el carácter al valor de atributo al que se hace referencia.

  • Para una referencia de entidad, procese recursivamente el texto de reemplazo de la entidad.

  • Para un carácter de espacio en blanco (#x20, #xD, #xA, #x9), anexe #x20 al valor normalizado. (Solo se anexa un único #x20 para una secuencia de "#xD#xA" que forma parte de una entidad analizada externa o el valor de entidad literal de una entidad analizada interna).

  • Procese otros caracteres anexandolos al valor normalizado.

  • Si el valor declarado no es CDATA, descarte los caracteres de espacio inicial y final (#x20) y reemplace secuencias de espacio (#x20) por un solo carácter de espacio (#x20).

El XmlTextReader único realiza la normalización de atributos o CDATA. No realiza la normalización específica de DTD a menos que se encapsula dentro de .XmlValidatingReader

Consulte la recomendación W3C XML 1.0 para obtener más información sobre la normalización.

Se aplica a

Consulte también