XmlReader.ReadSubtree Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt eine neue XmlReader Instanz zurück, die zum Lesen des aktuellen Knotens und aller untergeordneten Objekte verwendet werden kann.
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
Gibt zurück
Eine neue XML-Reader-Instanz, die auf Initial. Durch Aufrufen der Read() Methode wird der neue Reader auf dem Knoten positioniert, der vor dem Aufruf der ReadSubtree() Methode aktuell war.
Ausnahmen
Der XML-Reader wird nicht für ein Element positioniert, wenn diese Methode aufgerufen wird.
-oder-
Eine XmlReader Methode wurde aufgerufen, bevor ein vorheriger asynchroner Vorgang abgeschlossen wurde. In diesem Fall InvalidOperationException wird die Meldung "Ein asynchroner Vorgang wird bereits ausgeführt" ausgelöst.
Beispiele
Das folgende Beispiel zeigt, wie die ReadSubtree Methode verwendet wird.
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
Verwenden Sie die folgenden XML-Daten, um die Beispiele in diesem Thema auszuführen:
<?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>
Hinweise
ReadSubtree kann nur auf Elementknoten aufgerufen werden. Wenn die gesamte Unterstruktur gelesen wurde, werden Aufrufe der Read Methode zurückgegeben false. Wenn der neue XML-Reader geschlossen wurde, wird der ursprüngliche Reader auf dem EndElement Knoten der Unterstruktur positioniert. Wenn Sie also die ReadSubtree Methode für das Starttag des Buchelements aufgerufen haben, nachdem die Unterstruktur gelesen und der neue XML-Reader geschlossen wurde, wird der ursprüngliche XML-Reader am Endtag des Buchelements positioniert.
Sie sollten keine Vorgänge für den ursprünglichen Reader ausführen, bis der neue Reader geschlossen wurde. Diese Aktion wird nicht unterstützt und kann zu unvorhersehbaren Verhaltensweisen führen.
Note
Die ReadSubtree Methode ist nicht für das Erstellen von Kopien der XML-Daten vorgesehen, mit denen Sie unabhängig arbeiten können. Es wurde entwickelt, um eine Grenze um ein XML-Element zu erstellen. Dies ist nützlich, wenn Sie Daten zur Verarbeitung an eine andere Komponente übergeben möchten und sie einschränken möchten, auf wie viele Daten die Komponente zugreifen kann. Wenn Sie einen VON der ReadSubtree Methode zurückgegebenen XML-Reader an eine andere Anwendung übergeben, kann die Anwendung nur auf dieses XML-Element und nicht auf das gesamte XML-Dokument zugreifen.