XPathNavigator.ReadSubtree Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
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 .