Partager via


XPathNavigator.ReadSubtree Méthode

Définition

Retourne un objet XmlReader qui contient le nœud actuel et ses nœuds enfants.

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

Retours

XmlReader

Objet XmlReader qui contient le nœud actuel et ses nœuds enfants.

Exceptions

XPathNavigator n'est pas positionné sur un nœud d'élément ou sur le nœud racine.

Exemples

L’exemple suivant illustre l’utilisation de la ReadSubtree méthode sur le premier book élément du contosoBooks.xml fichier.

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()

L'exemple prend le fichier contosoBooks.xml comme entrée.

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

Remarques

Lorsque l'objet XmlReader est créé avec le nœud actuel et ses nœuds enfants, la propriété XmlReader de l'objet ReadState est définie sur Initial. Lorsque la méthode XmlReader de l'objet Read est appelée pour la première fois, le XmlReader est déplacé vers le nœud actuel du XPathNavigator. Le nouvel objet XmlReader poursuit la lecture jusqu’à la fin de l’arborescence XML. À ce stade, la méthode Read retourne false et la propriété XmlReader de l'objet ReadState est définie sur EndOfFile.

Notes

La modification de la position de l’objet XmlReader n’affecte pas la position du XPathNavigator.

Les déclarations d’espace de noms pour les espaces de noms dans l’étendue du nœud actuel ne sont pas insérées dans le flux XML fourni à l’objet XmlReader .

Notes

Ce comportement diffère de la WriteSubtree méthode.

Cette méthode crée l’objet XmlReader avec des paramètres de lecteur spécifiques et le module qui utilise cette méthode n’a aucun contrôle sur ces paramètres. Par exemple, le lecteur retourné par cette méthode interdit le traitement des définitions de type de données (DTD). Si le lecteur tente de lire un fichier qui utilise un DTD, il lève une erreur XmlException. Le message de l’exception sera Unexpected DTD declaration.

Vous pouvez modifier ce comportement en implémentant un personnalisé XmlResolver qui retourne un XmlReader avec le choix XmlReaderSettings.

S’applique à