Sdílet prostřednictvím


XmlTextReader.Normalization Vlastnost

Definice

Získá nebo nastaví hodnotu označující, zda se mají normalizovat prázdné znaky a hodnoty atributů.

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

Hodnota vlastnosti

Boolean

truenormalizovat; v opačném případě . false Výchozí formát je false.

Výjimky

Nastavení této vlastnosti při zavření čtenáře (ReadState je ReadState.Closed).

Příklady

Následující příklad ukazuje chování čtenáře se zapnutým a vypnutým normalizací.

#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

Poznámky

Poznámka

Počínaje rozhraním .NET Framework 2.0 doporučujeme vytvářet XmlReader instance pomocí XmlReader.Create metody, abyste mohli využívat nové funkce.

Tuto vlastnost lze kdykoli změnit a projeví se na další operaci čtení.

Poznámka

XmlTextReader Pokud se používá k vytvoření hodnoty atributu XmlValidatingReaderNormalization , musí být nastavena na true.

Pokud Normalization je nastavená hodnota false, zakáže se také kontrola rozsahu znaků pro číselné entity. V důsledku toho jsou povolené entity znaků, například &#0;, .

Následující popis normalizace hodnot atributů:

  • Pro odkaz na znak připojte odkazovaný znak k hodnotě atributu.

  • U odkazu na entitu rekurzivně zpracujte náhradní text entity.

  • Pro prázdný znak (#x20, #xD, #xA, #x9) připojte #x20 k normalizované hodnotě. (Pro sekvenci #xD#xA, která je součástí externí analyzované entity nebo hodnoty literálové entity interní analyzované entity, je připojena pouze jedna #x20.)

  • Zpracujte další znaky tak, že je připojíte k normalizované hodnotě.

  • Pokud deklarovaná hodnota není CDATA, zahoďte žádné počáteční a koncové znaky (#x20) a nahraďte sekvence mezery (#x20) jedním znakem mezery (#x20).

Jediný XmlTextReader atribut nebo normalizace CDATA. Neprovádí normalizaci specifickou pro DTD, pokud není zabalena do souboru XmlValidatingReader.

Další diskuzi o normalizaci najdete v doporučení W3C XML 1.0.

Platí pro

Viz také