XmlTextReader.Normalization Eigenschap

Definitie

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of witruimte en kenmerkwaarden moeten worden genormaliseerd.

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

Waarde van eigenschap

true om te normaliseren; anders, false. De standaardwaarde is false.

Uitzonderingen

Deze eigenschap instellen wanneer de lezer wordt gesloten (ReadState is ReadState.Closed).

Voorbeelden

In het volgende voorbeeld ziet u het gedrag van lezers met normalisatie ingeschakeld en vervolgens uitgeschakeld.

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

Opmerkingen

Note

Wij raden aan dat u XmlReader instanties maakt met behulp van de XmlReader.Create methode om te profiteren van nieuwe functionaliteiten.

Deze eigenschap kan op elk gewenst moment worden gewijzigd en wordt van kracht op de volgende leesbewerking.

Note

Als de XmlTextReader wordt gebruikt om een XmlValidatingReader, om kenmerkwaarden te normaliseren, Normalization moet worden ingesteld op true.

Als Normalization dit is ingesteld falseop, wordt ook het controleren van tekenbereiken voor numerieke entiteiten uitgeschakeld. Als gevolg hiervan zijn tekenentiteiten, zoals &#0;, toegestaan.

Hieronder wordt de normalisatie van kenmerkwaarden beschreven:

  • Voor een tekenreferentie voegt u het teken waarnaar wordt verwezen toe aan de kenmerkwaarde.

  • Voor een entiteitsverwijzing verwerkt u recursief de vervangende tekst van de entiteit.

  • Voeg voor een witruimteteken (#x20, #xD, #xA, #x9) #x20 toe aan de genormaliseerde waarde. (Er wordt slechts één #x20 toegevoegd voor een reeks '#xD#xA' die deel uitmaakt van een externe geparseerde entiteit of de letterlijke entiteitswaarde van een interne geparseerde entiteit.)

  • Andere tekens verwerken door ze toe te voegen aan de genormaliseerde waarde.

  • Als de gedeclareerde waarde geen CDATA is, verwijdert u voorloop- en volgruimtetekens (#x20) en vervangt u reeksen spaties (#x20) door één spatieteken (#x20).

Het XmlTextReader enige kenmerk of de CDATA-normalisatie wordt uitgevoerd. Het doet geen DTD-specifieke normalisatie tenzij verpakt binnen een XmlValidatingReader.

Raadpleeg de W3C XML 1.0-aanbeveling voor verdere discussie over normalisatie.

Van toepassing op

Zie ook