XmlReader.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 une nouvelle XmlReader instance qui peut être utilisée pour lire le nœud actuel et tous ses descendants.
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
Nouvelle instance de lecteur XML définie sur Initial. L’appel de la Read() méthode positionne le nouveau lecteur sur le nœud qui était actif avant l’appel à la ReadSubtree() méthode.
Exceptions
Le lecteur XML n’est pas positionné sur un élément lorsque cette méthode est appelée.
-ou-
Une XmlReader méthode a été appelée avant la fin d’une opération asynchrone précédente. Dans ce cas, InvalidOperationException est levée avec le message « Une opération asynchrone est déjà en cours ».
Exemples
L’exemple suivant montre comment utiliser la ReadSubtree méthode.
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = true;
using (XmlReader reader = XmlReader.Create("books.xml", settings)) {
// Position the reader on the second book node
reader.ReadToFollowing("Book");
reader.Skip();
// Create another reader that contains just the second book node.
XmlReader inner = reader.ReadSubtree();
inner.ReadToDescendant("Title");
Console.WriteLine(inner.Name);
// Do additional processing on the inner reader. After you
// are done, call Close on the inner reader and
// continue processing using the original reader.
inner.Close();
}
Dim settings As New XmlReaderSettings()
settings.IgnoreWhitespace = True
Using reader As XmlReader = XmlReader.Create("books.xml", settings)
' Position the reader on the second book node.
reader.ReadToFollowing("Book")
reader.Skip()
' Create another reader that contains just the second book node.
Dim inner As XmlReader = reader.ReadSubtree()
inner.ReadToDescendant("Title")
Console.WriteLine(inner.Name)
' Do additional processing on the inner reader. After you
' are done, call Close on the inner reader and
' continue processing using the original reader.
inner.Close()
End Using
Utilisez les données XML suivantes pour exécuter les exemples de cette rubrique :
<?xml version="1.0" encoding="utf-8" ?>
<Books>
<Book>
<Title>A Brief History of Time</Title>
</Book>
<Book>
<Title>Principle Of Relativity</Title>
</Book>
<Book>
<Title>Victory of Reason</Title>
</Book>
<Book>
<Title>The Unicorn that did not Fail</Title>
</Book>
<Book>
<Title>Rational Ontology</Title>
</Book>
<Book>
<Title>The Meaning of Pizza</Title>
</Book>
</Books>
Remarques
ReadSubtree peut être appelé uniquement sur les nœuds d’élément. Lorsque la sous-arborescence entière a été lue, les appels à la Read méthode retournent false. Lorsque le nouveau lecteur XML a été fermé, le lecteur d’origine est positionné sur le EndElement nœud de la sous-arborescence. Par conséquent, si vous avez appelé la ReadSubtree méthode sur la balise de début de l’élément de livre, une fois que la sous-arborescence a été lue et que le nouveau lecteur XML a été fermé, le lecteur XML d’origine est positionné sur la balise de fin de l’élément de livre.
Vous ne devez effectuer aucune opération sur le lecteur d’origine tant que le nouveau lecteur n’a pas été fermé. Cette action n’est pas prise en charge et peut entraîner un comportement imprévisible.
Note
La ReadSubtree méthode n’est pas destinée à créer des copies des données XML que vous pouvez utiliser indépendamment. Il est conçu pour créer une limite autour d’un élément XML. Cela est utile si vous souhaitez transmettre des données à un autre composant pour le traitement et que vous souhaitez limiter la quantité de vos données que le composant peut accéder. Lorsque vous transmettez un lecteur XML retourné par la ReadSubtree méthode à une autre application, l’application peut accéder uniquement à cet élément XML, et non à l’intégralité du document XML.