XmlTextReader.Normalization Properti

Definisi

Mendapatkan atau menetapkan nilai yang menunjukkan apakah akan menormalkan spasi kosong dan nilai 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

Nilai Properti

true untuk menormalkan; jika tidak, false. Defaultnya adalah false.

Pengecualian

Mengatur properti ini ketika pembaca ditutup (ReadState adalah ReadState.Closed).

Contoh

Contoh berikut menunjukkan perilaku pembaca dengan normalisasi diaktifkan lalu nonaktif.

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

Keterangan

Note

Kami menyarankan Anda membuat instans XmlReader untuk memanfaatkan fungsionalitas baru dengan menggunakan metode XmlReader.Create.

Properti ini dapat diubah kapan saja dan berlaku pada operasi baca berikutnya.

Note

XmlTextReader Jika digunakan untuk membuat XmlValidatingReader, untuk menormalkan nilai atribut, Normalization harus diatur ke true.

Jika Normalization diatur ke false, ini juga menonaktifkan pemeriksaan rentang karakter untuk entitas numerik. Akibatnya, entitas karakter, seperti &#0;, diizinkan.

Berikut ini menjelaskan normalisasi nilai atribut:

  • Untuk referensi karakter, tambahkan karakter yang dirujuk ke nilai atribut.

  • Untuk referensi entitas, secara rekursif memproses teks pengganti entitas.

  • Untuk karakter spasi putih (#x20, #xD, #xA, #x9), tambahkan #x20 ke nilai yang dinormalisasi. (Hanya satu #x20 yang ditambahkan untuk urutan "#xD#xA" yang merupakan bagian dari entitas eksternal yang diurai atau nilai entitas harfiah dari entitas internal yang diurai.)

  • Proses karakter lain dengan menambahkannya ke nilai yang dinormalisasi.

  • Jika nilai yang dideklarasikan bukan CDATA, buang karakter spasi di depan dan akhir (#x20) dan ganti urutan karakter spasi (#x20) dengan karakter spasi tunggal (#x20).

Satu-satunya XmlTextReader melakukan atribut atau normalisasi CDATA. Ini tidak melakukan normalisasi khusus DTD kecuali dibungkus dalam XmlValidatingReader.

Lihat rekomendasi W3C XML 1.0 untuk diskusi lebih lanjut tentang normalisasi.

Berlaku untuk

Lihat juga