XmlTextReader.Normalization Egenskap

Definition

Hämtar eller anger ett värde som anger om blanksteg och attributvärden ska normaliseras.

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

Egenskapsvärde

trueför att normalisera; annars . false Standardvärdet är false.

Undantag

Ange den här egenskapen när läsaren stängs (ReadState är ReadState.Closed).

Exempel

I följande exempel visas läsarbeteende med normalisering aktiverat och sedan inaktiverat.

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

Kommentarer

Note

Vi rekommenderar att du skapar XmlReader instanser genom att använda XmlReader.Create metoden för att dra nytta av nya funktioner.

Den här egenskapen kan ändras när som helst och börjar gälla vid nästa läsåtgärd.

Note

XmlTextReader Om används för att konstruera ett XmlValidatingReader, för att normalisera attributvärden, Normalization måste anges till true.

Om Normalization är inställt på falseinaktiverar detta även teckenintervallkontroll för numeriska entiteter. Därför tillåts teckenentiteter, till exempel &#0;,.

Följande beskriver attributvärdesnormalisering:

  • För en teckenreferens lägger du till det refererade tecknet i attributvärdet.

  • För en entitetsreferens bearbetar du rekursivt ersättningstexten för entiteten.

  • För ett blankstegstecken (#x20, #xD, #xA, #x9) lägger du till #x20 till det normaliserade värdet. (Endast en enda #x20 läggs till för en "#xD#xA"-sekvens som ingår i en extern parsad entitet eller literalentitetsvärdet för en intern parsad entitet.)

  • Bearbeta andra tecken genom att lägga till dem i det normaliserade värdet.

  • Om det deklarerade värdet inte är CDATA tar du bort alla inledande och avslutande blanksteg (#x20) tecken och ersätter sekvenser av blanksteg (#x20) tecken med ett enda blanksteg (#x20) tecken.

Den XmlTextReader enda utför attribut eller CDATA-normalisering. Den utför inte DTD-specifik normalisering om den inte omsluts i en XmlValidatingReader.

Mer information om normalisering finns i W3C XML 1.0-rekommendationen.

Gäller för

Se även