XmlReader.ReadSubtree Methode

Definitie

Retourneert een nieuw XmlReader exemplaar dat kan worden gebruikt om het huidige knooppunt en alle onderliggende items ervan te lezen.

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

Retouren

Er is een nieuw XML-lezerexemplaren ingesteld op Initial. Als u de Read() methode aanroept, wordt de nieuwe lezer op het knooppunt dat actueel was voordat de aanroep naar de ReadSubtree() methode werd uitgevoerd.

Uitzonderingen

De XML-lezer bevindt zich niet op een element wanneer deze methode wordt aangeroepen.

– of –

Er XmlReader is een methode aangeroepen voordat een vorige asynchrone bewerking is voltooid. In dit geval InvalidOperationException wordt het bericht 'Er wordt al een asynchrone bewerking uitgevoerd'.

Voorbeelden

In het volgende voorbeeld ziet u hoe u de ReadSubtree methode gebruikt.

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

Gebruik de volgende XML-gegevens om de voorbeelden in dit onderwerp uit te voeren:

<?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>

Opmerkingen

ReadSubtree kan alleen worden aangeroepen op elementknooppunten. Wanneer de hele substructuur is gelezen, worden aanroepen naar de Read methode geretourneerd false. Wanneer de nieuwe XML-lezer is gesloten, wordt de oorspronkelijke lezer op het EndElement knooppunt van de substructuur weergegeven. Dus als u de methode op de ReadSubtree starttag van het boekelement hebt aangeroepen, nadat de substructuur is gelezen en de nieuwe XML-lezer is gesloten, wordt de oorspronkelijke XML-lezer op de eindtag van het boekelement weergegeven.

U moet geen bewerkingen uitvoeren op de oorspronkelijke lezer totdat de nieuwe lezer is gesloten. Deze actie wordt niet ondersteund en kan leiden tot onvoorspelbaar gedrag.

Note

De ReadSubtree methode is niet bedoeld voor het maken van kopieën van de XML-gegevens waarmee u onafhankelijk kunt werken. Het is ontworpen om een grens rond een XML-element te maken. Dit is handig als u gegevens wilt doorgeven aan een ander onderdeel voor verwerking en u wilt beperken hoeveel van uw gegevens het onderdeel kan openen. Wanneer u een XML-lezer doorgeeft die door de ReadSubtree methode aan een andere toepassing wordt geretourneerd, heeft de toepassing alleen toegang tot dat XML-element, niet tot het hele XML-document.

Van toepassing op