Freigeben über


XPathNavigator.ReadSubtree Methode

Definition

Gibt ein XmlReader-Objekt zurück, das den aktuellen Knoten und dessen untergeordnete 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

XmlReader

Ein XmlReader-Objekt, das den aktuellen Knoten und dessen untergeordnete Knoten enthält.

Ausnahmen

Der XPathNavigator ist nicht auf einem Elementknoten oder dem Stammknoten positioniert.

Beispiele

Im folgenden Beispiel wird die ReadSubtree Methode im ersten book Element der contosoBooks.xml Datei veranschaulicht.

XPathDocument^ document = gcnew 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();
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()

In diesem Beispiel wird die Datei contosoBooks.xml 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

Beim Erstellen des XmlReader-Objekts aus dem aktuellen Knoten und den untergeordneten Knoten wird die XmlReader-Eigenschaft des ReadState-Objekts auf Initial festgelegt. Beim ersten Aufruf der XmlReader-Methode des Read-Objekts wird die Position des XmlReader auf den aktuellen Knoten des XPathNavigator verschoben. Das neue XmlReader-Objekt setzt den Lesevorgang bis zum Ende der XML-Struktur fort. In diesem Fall gibt die Read-Methode false zurück und die XmlReader-Eigenschaft des ReadState-Objekts wird auf EndOfFile festgelegt.

Hinweis

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

Namespacedeklarationen für die In-Bereich-Namespaces des aktuellen Knotens werden nicht in den XML-Stream eingefügt, der dem Objekt bereitgestellt XmlReader wird.

Hinweis

Dieses Verhalten unterscheidet sich von der WriteSubtree Methode.

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

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

Gilt für