XPathNavigator.ReadSubtree Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
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.