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 nastavená na Initial. Read() Volání metody umístí novou čtečku na uzel, který byl aktuální před voláním ReadSubtree() metody.
Výjimky
Čtečka XML není při zavolání této metody umístěna na elementu.
-nebo-
Před XmlReader dokončením předchozí asynchronní operace byla volána metoda. V tomto případě InvalidOperationException je vyvolán se zprávou "Asynchronní operace již probíhá.".
Příklady
Následující příklad ukazuje, jak používat 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ů. Když byl přečtený celý dílčí strom, volání Read metody vrátí false
. Po zavření nové čtečky XML je původní čtečka umístěna na EndElement
uzlu dílčího stromu. Pokud jste tedy volali metodu ReadSubtree na počáteční značce elementu book, po přečtení pod strom a zavření nové čtečky XML je původní čtečka XML umístěna na koncové značce elementu knihy.
S původní čtečkou byste neměli provádět žádné operace, dokud se nová čtečka nezavře. Tato akce není podporována a může mít za následek nepředvídatelné chování.
Poznámka
Metoda ReadSubtree 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řil ohraničení. To je užitečné, pokud chcete předat data jiné komponentě ke zpracování a chcete omezit množství dat, ke které má komponenta přístup. Když předáte čtečku XML vrácenou metodou ReadSubtree do jiné aplikace, aplikace má přístup pouze k elementu XML, ne k celému dokumentu XML.