XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Membaca konten sebagai objek dari tipe yang ditentukan.
public:
virtual System::Object ^ ReadContentAs(Type ^ returnType, System::Xml::IXmlNamespaceResolver ^ namespaceResolver);
public virtual object ReadContentAs(Type returnType, System.Xml.IXmlNamespaceResolver namespaceResolver);
public virtual object ReadContentAs(Type returnType, System.Xml.IXmlNamespaceResolver? namespaceResolver);
abstract member ReadContentAs : Type * System.Xml.IXmlNamespaceResolver -> obj
override this.ReadContentAs : Type * System.Xml.IXmlNamespaceResolver -> obj
Public Overridable Function ReadContentAs (returnType As Type, namespaceResolver As IXmlNamespaceResolver) As Object
Parameter
- returnType
- Type
Jenis nilai yang akan dikembalikan.
Catatan Dengan rilis .NET Framework 3.5, nilai returnType parameter sekarang dapat menjadi jenisnya DateTimeOffset .
- namespaceResolver
- IXmlNamespaceResolver
Objek IXmlNamespaceResolver yang digunakan untuk mengatasi awalan namespace apa pun yang terkait dengan konversi jenis. Misalnya, ini dapat digunakan saat mengonversi XmlQualifiedName objek ke xs:string.
Nilai ini bisa berupa null.
Mengembalikan
Konten teks yang digabungkan atau nilai atribut dikonversi ke jenis yang diminta.
Pengecualian
Konten tidak dalam format yang benar untuk jenis target.
Pemeran yang dicoba tidak valid.
Nilai returnTypenull.
Simpul saat ini bukan tipe node yang didukung. Lihat tabel di bawah ini untuk detailnya.
-atau-
Metode XmlReader dipanggil sebelum operasi asinkron sebelumnya selesai. Dalam hal ini, InvalidOperationException dilemparkan dengan pesan "Operasi asinkron sudah berlangsung."
Baca Decimal.MaxValue.
Contoh
Contoh berikut menggunakan ReadContentAs metode untuk mengembalikan konten elemen warna ke dalam array objek string.
using (XmlReader reader = XmlReader.Create("dataFile_2.xml")) {
reader.ReadToDescendant("item");
reader.MoveToAttribute("colors");
string[] colors = (string[]) reader.ReadContentAs(typeof(string[]),null);
foreach (string color in colors) {
Console.WriteLine("Colors: {0}", color);
}
}
Using reader As XmlReader = XmlReader.Create("dataFile_2.xml")
reader.ReadToDescendant("item")
reader.MoveToAttribute("colors")
Dim colors As String() = CType(reader.ReadContentAs(GetType(String()), Nothing), String())
Dim color As String
For Each color In colors
Console.WriteLine("Colors: {0}", color)
Next color
End Using
Contohnya menggunakan dataFile_2.xml file sebagai input.
<root>
<item sale-item='true' productID='123456' colors='blue green black'>
<price>9.95</price>
</item>
<item sale-item='false' productID='124390'>
<price>5.95</price>
</item>
<item sale-item='true' productID='53298'>
<price>12.95</price>
</item>
</root>
Keterangan
Metode ini membaca konten teks pada posisi pembaca saat ini dan mengonversinya ke jenis pengembalian yang diminta. Teks, spasi kosong, ruang kosong yang signifikan, dan bagian CDATA digabungkan. Komentar dan instruksi pemrosesan dilewati dan referensi entitas diselesaikan secara otomatis.
Metode ini digunakan untuk membaca, mengonversi jika perlu, dan mengembalikan item nilai atomik dari konten simpul saat ini. Jika jenis input adalah pemetaan yang valid untuk jenis simpul saat ini, maka instans jenis target yang berisi nilai simpul saat ini dikembalikan. Lihat bagian Keterangan di XmlReader halaman referensi untuk daftar pemetaan default.
Misalnya, jika Anda memiliki teks XML berikut:
<elem>123 <!-- comment --> <?pi my_text?> 456 <?pi another_pi?></elem>
Jika data di ketik dan array string disediakan ke ReadContentAs panggilan metode, maka nilai bilangan bulat dikonversi dari string sesuai dengan daftar pemetaan jenis CLR yang valid.
Jika data tidak dijenis dan array string disediakan ke ReadContentAs panggilan metode, maka konten diurai ke dalam string terpisah. Array yang berisi dua string dikembalikan dengan nilai "123" dan "456". Spasi tidak dipertahankan dari konten.
Secara umum saat membaca data yang tidak dijenis, konten diurai sesuai dengan jenis yang disediakan. Misalnya, jika array bilangan bulat disediakan ke ReadContentAs panggilan metode, maka string diuraikan ke dalam array bilangan {123,456}bulat .
Dalam contoh berikut, teks XML tidak dipisahkan oleh spasi
<elem>123<!-- comment --><?pi my_text?>456789<?pi another_pi?></elem>
Jika konten tidak diketik dan array string disediakan ke ReadContentAs panggilan metode, maka array yang berisi satu string yang digabungkan dikembalikan dengan nilai "123456789".
Tabel berikut menjelaskan bagaimana metode ini memperlakukan setiap jenis node.
| XmlNodeType | Mengembalikan nilai | Perilaku pembaca |
|---|---|---|
TextCDATAWhitespaceSignificantWhitespaceEntityReferenceEndEntity |
Konten teks yang digabungkan, CDATA, spasi kosong, dan simpul spasi putih yang signifikan dikonversi ke jenis yang diminta. | Berpindah ke elemen mulai berikutnya atau tag elemen akhir. Referensi entitas secara otomatis diperluas. |
Attribute |
Sama seperti memanggil XmlConvert.ToXxx pada nilai atribut. |
Pembaca tetap berada di posisi saat ini. |
CommentProcessingInstruction |
Mengabaikan instruksi pemrosesan (PI) atau komentar dan membaca konten teks yang digabungkan yang mengikuti PI atau komentar. | Berpindah ke elemen mulai berikutnya atau tag elemen akhir. Referensi entitas secara otomatis diperluas. |
EndElement |
String kosong. | Pembaca tetap berada di posisi saat ini. |
ElementXmlDeclarationNoneDocumentDocumentTypeNotationEntityDocumentFragment |
Sebuah InvalidOperationException dilemparkan. | Tidak terdefinisi, meskipun biasanya pembaca tetap berada di posisi saat ini. |
Untuk informasi selengkapnya, lihat bagian Keterangan dari XmlReader halaman referensi dan rekomendasi Skema XML W3C Bagian 2: Jenis data .
Untuk versi asinkron dari metode ini, lihat ReadContentAsAsync.