Bagikan melalui


Kelas System.Xml.XmlTextReader

Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.

Nota

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

XmlTextReader menyediakan akses hanya-maju dan baca-saja ke aliran data XML. Simpul saat ini mengacu pada simpul di mana pembaca berada. Pembaca dimajukan menggunakan salah satu metode baca dan properti yang mencerminkan nilai simpul saat ini.

Kelas ini mengimplementasikan XmlReader dan sesuai dengan W3C Extensible Markup Language (XML) 1.0 dan Namespace dalam rekomendasi XML. XmlTextReader menyediakan fungsionalitas berikut:

  • Menerapkan aturan XML yang terbentuk dengan baik.

  • XmlTextReader tidak menyediakan validasi data.

  • Memeriksa apakah simpul DocumentType terbentuk dengan baik. XmlTextReader memeriksa DTD untuk keterbentukan yang baik, tetapi tidak memvalidasi menggunakan DTD.

  • Untuk simpul di mana NodeType adalah XmlNodeType.EntityReference, satu simpul kosong EntityReference dikembalikan (yaitu, properti Value adalah String.Empty).

Nota

Deklarasi entitas aktual dalam DTD disebut sebagai Entity simpul. Saat Anda merujuk ke simpul ini dalam data Anda, node tersebut disebut EntityReference node.

  • Tidak memperluas atribut default.

Karena XmlTextReader tidak melakukan pemeriksaan tambahan yang diperlukan untuk validasi data, ia menyediakan pengurai well-formedness yang cepat.

Untuk melakukan validasi data, gunakan validasi XmlReader.

Untuk membaca data XML dari XmlDocument, gunakan XmlNodeReader.

XmlTextReader menghasilkan XmlException pada kesalahan penguraian XML. Setelah pengecualian dilemparkan, status pembaca tidak dapat diprediksi. Misalnya, jenis node yang dilaporkan mungkin berbeda dari jenis node aktual dari node saat ini. ReadState Gunakan properti untuk memeriksa apakah pembaca dalam status kesalahan.

Pertimbangan keamanan

Berikut ini adalah hal-hal yang perlu dipertimbangkan saat menggunakan kelas XmlTextReader.

  • Pengecualian yang dilemparkan XmlTextReader dapat mengungkapkan informasi jalur yang tidak ingin Anda sebarkan ke aplikasi. Aplikasi Anda harus menangkap pengecualian dan memprosesnya dengan tepat.

  • Pemrosesan DTD diaktifkan secara default. Nonaktifkan pemrosesan DTD jika Anda khawatir tentang Masalah Penolakan Layanan atau jika Anda berurusan dengan sumber yang tidak tepercaya. Atur DtdProcessing properti ke Prohibit untuk menonaktifkan pemrosesan DTD.

    Jika Anda mengaktifkan pemrosesan DTD, Anda dapat menggunakan XmlSecureResolver untuk membatasi sumber daya yang dapat diakses XmlTextReader. Anda juga dapat merancang aplikasi Anda sehingga pemrosesan XML dibatasi memori dan waktu. Misalnya, konfigurasikan batas waktu habis di aplikasi ASP.NET Anda.

  • Data XML dapat menyertakan referensi ke sumber daya eksternal seperti file DTD. Secara default sumber daya eksternal diselesaikan menggunakan XmlUrlResolver objek tanpa kredensial pengguna. Anda dapat mengamankannya lebih lanjut dengan melakukan salah satu hal berikut:

  • Data XML dapat berisi sejumlah besar atribut, deklarasi namespace, elemen berlapis dan sebagainya yang memerlukan banyak waktu untuk diproses. Untuk membatasi ukuran input yang dikirim ke XmlTextReader, buat implementasi IStream kustom dan berikan .XmlTextReader

  • Metode ReadValueChunk dapat digunakan untuk menangani aliran data yang besar. Metode ini membaca sejumlah kecil karakter pada satu waktu alih-alih mengalokasikan string tunggal untuk seluruh nilai.

  • Secara default entitas umum tidak diperluas. Entitas umum dikembangkan saat Anda memanggil metode ResolveEntity.