XmlReader.ReadSubtree Methode

Definition

Gibt eine neue XmlReader-Instanz zurück, die zum Lesen des aktuellen Knotens und aller Nachfolgerknoten 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

XmlReader

Eine neue auf Initial festgelegte XML-Reader-Instanz. Durch den Aufruf 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 in einem Element positioniert, wenn diese Methode aufgerufen wird.

- oder -

Eine XmlReader-Methode wurde aufgerufen, bevor ein vorheriger asynchroner Vorgang abgeschlossen wurde. In diesem Fall wird InvalidOperationException mit der Meldung „Es wird bereits ein asynchroner Vorgang ausgeführt“ ausgelöst.

Beispiele

Im folgenden Beispiel wird die Verwendung der ReadSubtree-Methode gezeigt.

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, wird der Aufruf der Read Methode zurückgegeben false. Wenn der neue XML-Reader geschlossen wurde, wird der ursprüngliche Leser auf dem EndElement Knoten der Unterstruktur positioniert. Wenn Sie also die ReadSubtree Methode auf dem Starttag des Buchelements aufgerufen haben, nachdem die Unterstruktur gelesen wurde und der neue XML-Reader geschlossen wurde, wird der ursprüngliche XML-Leser auf dem Endtag des Buchelements positioniert.

Es sollten keine Operationen für den ursprünglichen Reader ausgeführt werden, bevor der neue Reader geschlossen wurde. Diese Aktion wird nicht unterstützt und kann unvorhersehbares Verhalten zur Folge haben.

Hinweis

Die ReadSubtree Methode ist nicht für das Erstellen von Kopien der XML-Daten vorgesehen, mit denen Sie unabhängig arbeiten können. Es ist so konzipiert, dass eine Grenze um ein XML-Element erstellt wird. Dies ist nützlich, wenn Sie Daten an eine andere Komponente für die Verarbeitung übergeben möchten, und Sie möchten einschränken, auf wie viel Daten die Komponente zugreifen kann. Wenn Sie einen XML-Reader übergeben, der von der ReadSubtree Methode an eine andere Anwendung zurückgegeben wird, kann die Anwendung nur auf dieses XML-Element zugreifen, nicht das gesamte XML-Dokument.

Gilt für