XPathNavigator.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 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
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.