Aracılığıyla paylaş


XmlTextReader.Normalization Özellik

Tanım

Boşluk ve öznitelik değerlerini normalleştirip normalleştirmeyeceğini belirten bir değer alır veya ayarlar.

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

Özellik Değeri

Boolean

true normalleştirmek için; aksi takdirde , false. Varsayılan değer: false.

Özel durumlar

Okuyucu kapalıyken bu özelliği ayarlama (ReadState is ReadState.Closed).

Örnekler

Aşağıdaki örnek, normalleştirmenin açık ve kapalı olduğu okuyucu davranışını gösterir.

#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

Açıklamalar

Not

.NET Framework 2.0'dan başlayarak, yeni işlevlerden yararlanmak için yöntemini kullanarak XmlReader.Create örnekler oluşturmanızı XmlReader öneririz.

Bu özellik herhangi bir zamanda değiştirilebilir ve bir sonraki okuma işleminde etkili olur.

Not

XmlTextReader öznitelik değerlerini normalleştirmek için bir XmlValidatingReaderoluşturmak için kullanılıyorsa, Normalization olarak ayarlanmalıdırtrue.

olarak ayarlanırsa Normalization false, bu, sayısal varlıklar için karakter aralığı denetimini de devre dışı bırakır. Sonuç olarak, gibi &#0;karakter varlıklarına izin verilir.

Öznitelik değeri normalleştirmesi aşağıda açıklanmaktadır:

  • Karakter başvurusu için, başvuruda bulunan karakteri öznitelik değerine ekleyin.

  • Varlık başvurusu için varlığın değiştirme metnini yinelemeli olarak işleyin.

  • Boşluk karakteri için (#x20, #xD, #xA, #x9), normalleştirilmiş değere #x20 ekleyin. (Dış ayrıştırılmış varlığın parçası olan "#xD#xA" dizisi veya iç ayrıştırılmış varlığın değişmez varlık değeri için yalnızca tek bir #x20 eklenir.)

  • Diğer karakterleri normalleştirilmiş değere ekleyerek işleyin.

  • Bildirilen değer CDATA değilse, baştaki ve sondaki boşluk (#x20) karakterleri atıp boşluk (#x20) karakter dizilerini tek bir boşluk (#x20) karakteriyle değiştirin.

Yalnızca XmlTextReader özniteliğini veya CDATA normalleştirmesini gerçekleştirir. içinde sarmalanmadığı XmlValidatingReadersürece DTD'ye özgü normalleştirme yapmaz.

Normalleştirme hakkında daha fazla bilgi için W3C XML 1.0 önerisine bakın.

Şunlara uygulanır

Ayrıca bkz.