Bagikan melalui


XPathNavigator.ReadSubtree Metode

Definisi

Mengembalikan XmlReader objek yang berisi simpul saat ini dan simpul anaknya.

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

Objek XmlReader yang berisi simpul saat ini dan simpul anaknya.

Pengecualian

XPathNavigator tidak diposisikan pada node elemen atau simpul akar.

Contoh

Contoh berikut mengilustrasikan menggunakan ReadSubtree metode pada elemen contosoBooks.xml pertama book file.

XPathDocument document = new XPathDocument("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();

navigator.MoveToChild("bookstore", "http://www.contoso.com/books");
navigator.MoveToChild("book", "http://www.contoso.com/books");

XmlReader reader = navigator.ReadSubtree();

while (reader.Read())
{
    Console.WriteLine(reader.ReadInnerXml());
}

reader.Close();
Dim document As XPathDocument = New XPathDocument("contosoBooks.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

navigator.MoveToChild("bookstore", "http://www.contoso.com/books")
navigator.MoveToChild("book", "http://www.contoso.com/books")

Dim reader As XmlReader = navigator.ReadSubtree()

While reader.Read()
    Console.WriteLine(reader.ReadInnerXml())
End While

reader.Close()

Contoh mengambil contosoBooks.xml file sebagai input.

<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
        <title>The Autobiography of Benjamin Franklin</title>
        <author>
            <first-name>Benjamin</first-name>
            <last-name>Franklin</last-name>
        </author>
        <price>8.99</price>
    </book>
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
        <title>The Confidence Man</title>
        <author>
            <first-name>Herman</first-name>
            <last-name>Melville</last-name>
        </author>
        <price>11.99</price>
    </book>
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
        <title>The Gorgias</title>
        <author>
            <name>Plato</name>
        </author>
        <price>9.99</price>
    </book>
</bookstore>

Keterangan

Ketika objek XmlReader dibuat menggunakan simpul saat ini dan simpul anaknya, properti XmlReader dari objek ReadState diatur ke Initial. XmlReader Ketika metode objek Read dipanggil untuk pertama kalinya, XmlReader dipindahkan ke simpul saat ini dari XPathNavigator. Objek baru XmlReader terus dibaca hingga akhir pohon XML tercapai. Pada titik ini, metode Read mengembalikan false dan properti XmlReader dari objek ReadState diatur ke EndOfFile.

Nota

Mengubah posisi XmlReader objek tidak memengaruhi posisi XPathNavigator.

Deklarasi namespace layanan untuk namespace dalam cakupan simpul saat ini tidak dimasukkan ke dalam aliran XML yang disediakan untuk XmlReader objek.

Nota

Perilaku ini berbeda dari WriteSubtree metode .

Metode ini membuat XmlReader objek dengan pengaturan pembaca tertentu, dan modul yang menggunakan metode ini tidak memiliki kontrol atas pengaturan tersebut. Misalnya, pembaca yang dikembalikan oleh metode ini melarang pemrosesan Definisi Tipe Data (DTD). Jika pembaca mencoba membaca file yang menggunakan DTD, itu akan memunculkan kesalahan, XmlException. Pesan untuk pengecualian adalah Unexpected DTD declaration.

Anda dapat mengubah perilaku ini dengan menerapkan kustom XmlResolver yang mengembalikan XmlReader dengan yang diinginkan XmlReaderSettings.

Berlaku untuk