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.Gets or sets a value indicating whether to normalize white space and attribute values.

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 da propriedade

Boolean

true para normalizar; caso contrário, false.true to normalize; otherwise, false. O padrão é false.The default is false.

Exceções

Definir essa propriedade quando o leitor é fechado (ReadState é ReadState.Closed).Setting this property when the reader is closed (ReadState is ReadState.Closed).

Exemplos

O exemplo a seguir mostra o comportamento do leitor com a normalização ativada e, em seguida, desativada.The following example shows reader behavior with normalization turned on and then off.

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
   
   // Create the XML fragment to be parsed.
   String^ xmlFrag = "<item attr1='  test A B C\n"
   "1 2 3'/>\n"
   "<item attr2='&#01;'/>\n";
   
   // Create the XmlNamespaceManager.
   XmlNamespaceManager^ nsmgr = gcnew XmlNamespaceManager( gcnew NameTable );
   
   // Create the XmlParserContext.
   XmlParserContext^ context = gcnew XmlParserContext( nullptr,nsmgr,nullptr,XmlSpace::Preserve );
   
   // Create the reader.
   XmlTextReader^ reader = gcnew 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 &#00; to &#20; 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();
}

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='&#01;'/>";

    // 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 &#00; to &#20; 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='&#01;'/>"
                    

    ' 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 &#00; to &#20; 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

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.Starting with the .NET Framework 2.0, we recommend that you create XmlReader instances by using the XmlReader.Create method to take advantage of new functionality.

Essa propriedade pode ser alterada a qualquer momento e entra em vigor na próxima operação de leitura.This property can be changed at any time and takes effect on the next read operation.

Observação

Se o XmlTextReader for usado para construir um XmlValidatingReader , para normalizar valores de atributo, Normalization deve ser definido como true .If the XmlTextReader is used to construct an XmlValidatingReader, to normalize attribute values, Normalization must be set to true.

Se Normalization é definido como false , isso também desabilita a verificação de intervalo de caracteres para entidades numéricas.If Normalization is set to false, this also disables character range checking for numeric entities. Como resultado, as entidades de caractere, como &#0; , são permitidas.As a result, character entities, such as &#0;, are allowed.

O seguinte descreve a normalização de valor de atributo:The following describes attribute value normalization:

  • Para obter uma referência de caractere, acrescentar o caractere referenciado ao valor de atributo.For a character reference, append the referenced character to the attribute value.

  • Para obter uma referência de entidade, recursivamente processar o texto de substituição de entidade.For an entity reference, recursively process the replacement text of the entity.

  • Para um caractere de espaço em branco (#x20, #xD, #xA #x9), acrescente #x20 ao valor normalizado.For a white space character (#x20, #xD, #xA, #x9), append #x20 to the normalized value. (Apenas uma única #x20 é acrescentada para uma sequência "#xD#xA" que faz parte de uma entidade analisada externa ou o valor da entidade literal de uma entidade analisada interna.)(Only a single #x20 is appended for a "#xD#xA" sequence that is part of an external parsed entity or the literal entity value of an internal parsed entity.)

  • Processar outros caracteres acrescentar os ao valor normalizado.Process other characters by appending them to the normalized value.

  • Se o valor declarado não for CDATA, descarte os caracteres de espaço à esquerda e à direita (#x20) e substitua as seqüências de caracteres de espaço (#x20) por um caractere de espaço único (#x20).If the declared value is not CDATA, discard any leading and trailing space (#x20) characters and replace sequences of space (#x20) characters with a single space (#x20) character.

O XmlTextReader só executa o atributo ou CDATA normalização.The XmlTextReader only performs attribute or CDATA normalization. Ele não faz a normalização específica de DTD, a menos que esteja encapsulado em um XmlValidatingReader .It does not do DTD-specific normalization unless wrapped within an XmlValidatingReader.

Consulte a recomendação do W3C XML 1,0 para mais discussões sobre a normalização.Refer to the W3C XML 1.0 recommendation for further discussion on normalization.

Aplica-se a

Confira também