XmlReader.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í.
Vrátí novou XmlReader instanci, kterou lze použít ke čtení aktuálního uzlu a všech jeho potomků.
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
Nová instance čtečky XML nastavena na Initial. Read() Volání metody umístí novou čtenáře na uzel, který byl aktuální před voláním ReadSubtree() metody.
Výjimky
Čtečka XML není umístěna na element, když je volána tato metoda.
nebo
Před XmlReader dokončením předchozí asynchronní operace byla volána metoda. V tomto případě InvalidOperationException je vyvolán zpráva "Asynchronní operace už probíhá".
Příklady
Následující příklad ukazuje, jak použít metodu ReadSubtree .
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
Ke spuštění příkladů v tomto tématu použijte následující data XML:
<?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>
Poznámky
ReadSubtree lze volat pouze na uzlech elementů. Při čtení celého dílčího stromu volání Read metody vrátí false. Po zavření nové čtečky XML se původní čtečka umístí na EndElement uzel podsložky. Pokud jste tedy volali metodu ReadSubtree na počáteční značce elementu knihy, po přečtení podsložky a byla uzavřena nová čtečka XML, původní čtečka XML je umístěna na konci značky prvku knihy.
U původního čtenáře byste neměli provádět žádné operace, dokud nebude nový čtenář zavřený. Tato akce není podporována a může vést k nepředvídatelným chováním.
Note
Tato ReadSubtree metoda není určená k vytváření kopií dat XML, se kterými můžete pracovat nezávisle. Je navržená tak, aby kolem elementu XML vytvořila hranici. To je užitečné, pokud chcete předat data jiné komponentě ke zpracování a chcete omezit, kolik dat má komponenta přístup. Když předáte čtečku ReadSubtree XML vrácenou metodou do jiné aplikace, aplikace má přístup pouze k danému elementu XML, nikoli k celému dokumentu XML.