XmlReader.ReadSubtree 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.
Mengembalikan instans baru XmlReader yang dapat digunakan untuk membaca simpul saat ini, dan semua turunannya.
public:
virtual System::Xml::XmlReader ^ ReadSubtree();
public virtual System.Xml.XmlReader ReadSubtree();
abstract member ReadSubtree : unit -> System.Xml.XmlReader
override this.ReadSubtree : unit -> System.Xml.XmlReader
Public Overridable Function ReadSubtree () As XmlReader
Mengembalikan
Instans pembaca XML baru diatur ke Initial. Memanggil metode memposisikan Read() pembaca baru pada simpul yang saat ini sebelum panggilan ke ReadSubtree() metode .
Pengecualian
Pembaca XML tidak diposisikan pada elemen ketika metode ini dipanggil.
-atau-
Metode XmlReader dipanggil sebelum operasi asinkron sebelumnya selesai. Dalam hal ini, InvalidOperationException dilemparkan dengan pesan "Operasi asinkron sudah berlangsung."
Contoh
Contoh berikut menunjukkan cara menggunakan ReadSubtree metode .
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = true;
using (XmlReader reader = XmlReader.Create("books.xml", settings)) {
// Position the reader on the second book node
reader.ReadToFollowing("Book");
reader.Skip();
// Create another reader that contains just the second book node.
XmlReader inner = reader.ReadSubtree();
inner.ReadToDescendant("Title");
Console.WriteLine(inner.Name);
// Do additional processing on the inner reader. After you
// are done, call Close on the inner reader and
// continue processing using the original reader.
inner.Close();
}
Dim settings As New XmlReaderSettings()
settings.IgnoreWhitespace = True
Using reader As XmlReader = XmlReader.Create("books.xml", settings)
' Position the reader on the second book node.
reader.ReadToFollowing("Book")
reader.Skip()
' Create another reader that contains just the second book node.
Dim inner As XmlReader = reader.ReadSubtree()
inner.ReadToDescendant("Title")
Console.WriteLine(inner.Name)
' Do additional processing on the inner reader. After you
' are done, call Close on the inner reader and
' continue processing using the original reader.
inner.Close()
End Using
Gunakan data XML berikut untuk menjalankan contoh dalam topik ini:
<?xml version="1.0" encoding="utf-8" ?>
<Books>
<Book>
<Title>A Brief History of Time</Title>
</Book>
<Book>
<Title>Principle Of Relativity</Title>
</Book>
<Book>
<Title>Victory of Reason</Title>
</Book>
<Book>
<Title>The Unicorn that did not Fail</Title>
</Book>
<Book>
<Title>Rational Ontology</Title>
</Book>
<Book>
<Title>The Meaning of Pizza</Title>
</Book>
</Books>
Keterangan
ReadSubtree hanya dapat dipanggil pada node elemen. Ketika seluruh sub-pohon telah dibaca, panggilan ke Read metode mengembalikan false. Ketika pembaca XML baru telah ditutup, pembaca asli diposisikan pada simpul EndElement sub-pohon. Dengan demikian, jika Anda memanggil ReadSubtree metode pada tag awal elemen buku, setelah sub-pohon dibaca dan pembaca XML baru telah ditutup, pembaca XML asli diposisikan pada tag akhir elemen buku.
Anda tidak boleh melakukan operasi apa pun pada pembaca asli sampai pembaca baru ditutup. Tindakan ini tidak didukung dan dapat mengakibatkan perilaku yang tidak dapat diprediksi.
Note
Metode ReadSubtree ini tidak dimaksudkan untuk membuat salinan data XML yang dapat Anda kerjakan secara independen. Ini dirancang untuk membuat batas di sekitar elemen XML. Ini berguna jika Anda ingin meneruskan data ke komponen lain untuk diproses dan Anda ingin membatasi berapa banyak data yang dapat diakses komponen. Saat Anda meneruskan pembaca XML yang dikembalikan oleh ReadSubtree metode ke aplikasi lain, aplikasi hanya dapat mengakses elemen XML tersebut, bukan seluruh dokumen XML.