Kelas System.Xml.XmlTextReader
Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.
Catatan
Kami menyarankan agar Anda membuat XmlReader instans dengan menggunakan XmlReader.Create metode untuk memanfaatkan fungsionalitas baru.
XmlTextReader menyediakan akses hanya-terusan dan baca-saja ke aliran data XML. Simpul saat ini mengacu pada simpul tempat pembaca diposisikan. 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 bahwa
DocumentType
simpul terbentuk dengan baik.XmlTextReader
memeriksa DTD untuk kesadaran yang baik, tetapi tidak memvalidasi menggunakan DTD.Untuk simpul di mana NodeType adalah , satu simpul kosong
EntityReference
dikembalikan (yaitu, Value properti adalahString.Empty
XmlNodeType.EntityReference
).
Catatan
Deklarasi aktual entitas dalam DTD disebut Entity
simpul. Saat Anda merujuk ke simpul ini dalam data Anda, node tersebut disebut EntityReference
node.
- Tidak memperluas atribut default.
XmlTextReader
Karena tidak melakukan pemeriksaan tambahan yang diperlukan untuk validasi data, ia menyediakan pengurai kesejahteraan yang cepat.
Untuk melakukan validasi data, gunakan validasi XmlReader.
Untuk membaca data XML dari XmlDocument, gunakan XmlNodeReader.
XmlTextReader
melempar kesalahan XmlException 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 XmlTextReader saat menggunakan kelas .
Pengecualian yang dilemparkan XmlTextReader dapat mengungkapkan informasi jalur yang tidak ingin Anda gelembungkan 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 XmlTextReader dapat diakses. 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:
Batasi sumber daya yang XmlTextReader dapat diakses dengan mengatur XmlResolver properti ke XmlSecureResolver objek.
Jangan izinkan XmlReader untuk membuka sumber daya eksternal apa pun dengan mengatur XmlResolver properti ke
null
.
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 ini 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 diperluas saat Anda memanggil ResolveEntity metode .