Freigeben über


XPathNavigator.ReadSubtree Methode

Definition

Gibt ein XmlReader Objekt zurück, das den aktuellen Knoten und seine untergeordneten Knoten enthält.

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

Ein XmlReader Objekt, das den aktuellen Knoten und seine untergeordneten Knoten enthält.

Ausnahmen

Die XPathNavigator Position wird nicht auf einem Elementknoten oder dem Stammknoten positioniert.

Beispiele

Das folgende Beispiel veranschaulicht die Verwendung der ReadSubtree Methode für das erste book Element der contosoBooks.xml Datei.

XPathDocument document = new XPathDocument("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();

navigator.MoveToChild("bookstore", "http://www.contoso.com/books");
navigator.MoveToChild("book", "http://www.contoso.com/books");

XmlReader reader = navigator.ReadSubtree();

while (reader.Read())
{
    Console.WriteLine(reader.ReadInnerXml());
}

reader.Close();
Dim document As XPathDocument = New XPathDocument("contosoBooks.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

navigator.MoveToChild("bookstore", "http://www.contoso.com/books")
navigator.MoveToChild("book", "http://www.contoso.com/books")

Dim reader As XmlReader = navigator.ReadSubtree()

While reader.Read()
    Console.WriteLine(reader.ReadInnerXml())
End While

reader.Close()

Im Beispiel wird die contosoBooks.xml Datei als Eingabe verwendet.

<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
        <title>The Autobiography of Benjamin Franklin</title>
        <author>
            <first-name>Benjamin</first-name>
            <last-name>Franklin</last-name>
        </author>
        <price>8.99</price>
    </book>
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
        <title>The Confidence Man</title>
        <author>
            <first-name>Herman</first-name>
            <last-name>Melville</last-name>
        </author>
        <price>11.99</price>
    </book>
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
        <title>The Gorgias</title>
        <author>
            <name>Plato</name>
        </author>
        <price>9.99</price>
    </book>
</bookstore>

Hinweise

Wenn das XmlReader Objekt mit dem aktuellen Knoten und seinen untergeordneten Knoten erstellt wird, wird die Eigenschaft XmlReader des ReadState Objekts auf Initial gesetzt. Wenn die Methode XmlReader des Read-Objekts zum ersten Mal aufgerufen wird, wird das XmlReader auf den aktuellen Knoten des XPathNavigator verschoben. Das neue XmlReader-Objekt liest weiter, bis das Ende des XML-Baums erreicht ist. An diesem Punkt gibt die Read Methode zurück false , und die XmlReader Eigenschaft des ReadState Objekts wird auf EndOfFilefestgelegt.

Hinweis

Das Ändern der Position des XmlReader Objekts wirkt sich nicht auf die Position des Objekts aus XPathNavigator.

Namespacedeklarationen für die Namespaces im Gültigkeitsbereich des aktuellen Knotens werden nicht in den XML-Datenstrom eingefügt, der für das XmlReader Objekt bereitgestellt wird.

Hinweis

Dieses Verhalten unterscheidet sich von der WriteSubtree Methode.

Diese Methode erstellt das XmlReader Objekt mit bestimmten Leseeinstellungen, und das Modul, das diese Methode verwendet, hat keine Kontrolle über diese Einstellungen. Beispielsweise verbietet der von dieser Methode zurückgegebene Reader die Verarbeitung von Datentypdefinitionen (DATA Type Definitions, DTDs). Wenn der Leser versucht, eine Datei zu lesen, die eine DTD verwendet, wird ein Fehler ausgelöst. XmlException Die Meldung für die Ausnahme lautet Unexpected DTD declaration.

Sie können dieses Verhalten ändern, indem Sie einen Benutzerdefinierten XmlResolver implementieren, der eine XmlReader mit dem gewünschten XmlReaderSettingsWert zurückgibt.

Gilt für: