Partager via


XmlTextReader.Normalization Propriété

Définition

Obtient ou définit une valeur indiquant si les valeurs d'espaces blancs et d'attributs doivent être normalisées.

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

Valeur de propriété

Boolean

true pour effectuer la normalisation ; sinon, false. La valeur par défaut est false.

Exceptions

Définition de cette propriété lorsque le lecteur est fermé (ReadState est ReadState.Closed).

Exemples

L’exemple suivant montre le comportement du lecteur avec la normalisation activée, puis désactivée.

#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=''/>\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 � 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();
}
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

Remarques

Notes

À compter de .NET Framework 2.0, nous vous recommandons de créer XmlReader des instances à l’aide de la XmlReader.Create méthode pour tirer parti de nouvelles fonctionnalités.

Cette propriété peut être modifiée à tout moment et prend effet sur l’opération de lecture suivante.

Notes

Si l’objet XmlTextReader est utilisé pour construire un , pour normaliser les valeurs d’attribut XmlValidatingReader, Normalization doit être défini truesur .

Si Normalization la valeur est définie false, cela désactive également la vérification de la plage de caractères pour les entités numériques. Par conséquent, les entités de caractères, telles que &#0;, sont autorisées.

Les éléments suivants décrivent la normalisation de la valeur d’attribut :

  • Pour une référence de caractère, ajoutez le caractère référencé à la valeur d'attribut.

  • Pour une référence d'entité, traitez de manière récursive le texte de remplacement de l'entité.

  • Pour un caractère d’espace blanc (#x20, #xD, #xA, #x9), ajoutez #x20 à la valeur normalisée. (Une seule #x20 est ajoutée pour une séquence « #xD#xA » qui fait partie d’une entité analysée externe ou de la valeur d’entité littérale d’une entité analysée interne.)

  • Traitez les autres caractères en les ajoutant à la valeur normalisée.

  • Si la valeur déclarée n’est pas CDATA, ignorez les caractères d’espace de début et de fin (#x20) et remplacez les séquences d’espace (#x20) par un seul espace (#x20).

La seule opération effectue l’attribut ou la XmlTextReader normalisation CDATA. Elle ne fait pas de normalisation spécifique À DTD, sauf si elle est encapsulée dans un XmlValidatingReader.

Reportez-vous à la recommandation W3C XML 1.0 pour plus d’informations sur la normalisation.

S’applique à

Voir aussi