XPathNavigator.ReadSubtree Metoda

Definice

XmlReader Vrátí objekt, který obsahuje aktuální uzel a jeho podřízené uzly.

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

Návraty

XmlReader

Objekt XmlReader , který obsahuje aktuální uzel a podřízené uzly.

Výjimky

Není XPathNavigator umístěn na uzlu elementu nebo na kořenovém uzlu.

Příklady

Následující příklad ukazuje použití ReadSubtree metody na prvním book prvku contosoBooks.xml souboru.

XPathDocument^ document = gcnew 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();
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()

Příklad vezme contosoBooks.xml soubor jako vstup.

<?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>  

Poznámky

XmlReader Při vytvoření objektu s aktuálním uzlem a podřízenými XmlReader uzly je vlastnost objektu ReadState nastavena na Initial. Když se metoda objektu Read XmlReader volá poprvé, přesune se XmlReader do aktuálního uzlu objektu XPathNavigator. Nový XmlReader objekt bude pokračovat ve čtení, dokud se nedosáhne konce stromu XML. V tomto okamžiku metoda vrátí false a vlastnost objektu ReadState XmlReader je nastavena na EndOfFile.Read

Poznámka

Změna pozice objektu XmlReader nemá vliv na pozici objektu XPathNavigator.

Deklarace oboru názvů pro obory názvů v oboru aktuálního uzlu se nevkládají do datového proudu XML poskytnutého objektu XmlReader .

Poznámka

Toto chování se liší od WriteSubtree metody.

Tato metoda vytvoří XmlReader objekt s určitým nastavením čtenáře a modul, který tuto metodu používá, nemá žádnou kontrolu nad těmito nastaveními. Čtenář vrácený touto metodou například zakáže zpracování definic datových typů (DTD). Pokud se čtenář pokusí přečíst soubor, který používá DTD, vyvolá chybu. XmlException Zpráva o výjimce bude Unexpected DTD declaration.

Toto chování můžete změnit implementací vlastního XmlResolver objektu XmlReader , který vrátí požadovanou XmlReaderSettingshodnotu .

Platí pro