Partage via


XPathNodeIterator Classe

Définition

Fournit un itérateur sur un ensemble de nœuds sélectionné.

public ref class XPathNodeIterator abstract : ICloneable, System::Collections::IEnumerable
public ref class XPathNodeIterator abstract : System::Collections::IEnumerable
public ref class XPathNodeIterator abstract : ICloneable
public abstract class XPathNodeIterator : ICloneable, System.Collections.IEnumerable
public abstract class XPathNodeIterator : System.Collections.IEnumerable
public abstract class XPathNodeIterator : ICloneable
type XPathNodeIterator = class
    interface IEnumerable
    interface ICloneable
type XPathNodeIterator = class
    interface IEnumerable
type XPathNodeIterator = class
    interface ICloneable
type XPathNodeIterator = class
    interface ICloneable
    interface IEnumerable
Public MustInherit Class XPathNodeIterator
Implements ICloneable, IEnumerable
Public MustInherit Class XPathNodeIterator
Implements IEnumerable
Public MustInherit Class XPathNodeIterator
Implements ICloneable
Héritage
XPathNodeIterator
Implémente

Exemples

L’exemple suivant utilise la Select méthode de la XPathNavigator classe pour sélectionner un jeu de nœuds à l’aide de la XPathNodeIterator classe .

XPathDocument^ document = gcnew XPathDocument("books.xml");
XPathNavigator^ navigator = document->CreateNavigator();

XPathNodeIterator^ nodes = navigator->Select("/bookstore/book");
nodes->MoveNext();
XPathNavigator^ nodesNavigator = nodes->Current;

XPathNodeIterator^ nodesText = nodesNavigator->SelectDescendants(XPathNodeType::Text, false);

while (nodesText->MoveNext())
    Console::WriteLine(nodesText->Current->Value);
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();

XPathNodeIterator nodes = navigator.Select("/bookstore/book");
nodes.MoveNext();
XPathNavigator nodesNavigator = nodes.Current;

XPathNodeIterator nodesText = nodesNavigator.SelectDescendants(XPathNodeType.Text, false);

while (nodesText.MoveNext())
    Console.WriteLine(nodesText.Current.Value);
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim nodes As XPathNodeIterator = navigator.Select("/bookstore/book")
nodes.MoveNext()
Dim nodesNavigator As XPathNavigator = nodes.Current

Dim nodesText As XPathNodeIterator = nodesNavigator.SelectDescendants(XPathNodeType.Text, False)

While nodesText.MoveNext()
    Console.WriteLine(nodesText.Current.Value)
End While

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

<?xml version="1.0" encoding="utf-8" ?>   
<bookstore>  
    <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

Un XPathNodeIterator objet retourné par la XPathNavigator classe n’est pas positionné sur le premier nœud d’un ensemble de nœuds sélectionné. Un appel à la MoveNext méthode de la XPathNodeIterator classe doit être effectué pour positionner l’objet XPathNodeIterator sur le premier nœud de l’ensemble de nœuds sélectionné.

Lorsque vous utilisez le XPathNodeIterator, si vous modifiez le nœud actuel ou l’un de ses ancêtres, votre position actuelle est perdue. Si vous souhaitez modifier un certain nombre de nœuds que vous avez sélectionnés, créez un XPathNavigator tableau, copiez tous les nœuds du XPathNodeIterator dans le tableau, puis effectuez une itération dans le tableau et modifiez les nœuds.

Il existe deux façons d’itérer sur une XPathNavigator collection à l’aide de la XPathNodeIterator classe .

L’une des méthodes consiste à utiliser la MoveNext méthode, puis à appeler Current pour obtenir l’instance actuelle XPathNavigator , comme dans l’exemple suivant :

while (nodeIterator->MoveNext())
{
    XPathNavigator^ n = nodeIterator->Current;
Console::WriteLine(n->LocalName);
}
while (nodeIterator.MoveNext())
{
    XPathNavigator n = nodeIterator.Current;
    Console.WriteLine(n.LocalName);
}
While nodeIterator.MoveNext()
    Dim n As XPathNavigator = nodeIterator.Current
    Console.WriteLine(n.LocalName)
End While

Une autre méthode consiste à utiliser une foreach boucle pour appeler la GetEnumerator méthode et à utiliser l’interface retournée IEnumerator pour énumérer les nœuds, comme dans l’exemple suivant :

for each (XPathNavigator^ n in nodeIterator)
Console::WriteLine(n->LocalName);
foreach (XPathNavigator n in nodeIterator)
    Console.WriteLine(n.LocalName);
For Each n As XPathNavigator In nodeIterator
    Console.WriteLine(nav.LocalName)
Next

Vous devez utiliser MoveNext et Current ou utiliser GetEnumerator. La combinaison de ces deux approches peut entraîner des résultats inattendus. Par exemple, si la MoveNext méthode est appelée en premier, puis qu’elle GetEnumerator est appelée dans la foreach boucle, la foreach boucle ne commence pas à énumérer les résultats à partir du début de la collection, mais à partir de la position après la Current méthode.

Notes pour les responsables de l’implémentation

Lorsque vous héritez de la XPathNodeIterator classe, vous devez remplacer les membres suivants :

Constructeurs

XPathNodeIterator()

Initialise une nouvelle instance de la classe XPathNodeIterator.

Propriétés

Count

Obtient l'index du dernier nœud dans l'ensemble des nœuds sélectionnés.

Current

En cas de substitution dans une classe dérivée, obtient l’objet XPathNavigator pour cet élément XPathNodeIterator, placé sur le nœud de contexte actuel.

CurrentPosition

En cas de substitution dans une classe dérivée, obtient l'index de la position actuelle dans l'ensemble des nœuds sélectionnés.

Méthodes

Clone()

En cas de substitution dans une classe dérivée, retourne un clone de cet objet XPathNodeIterator.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetEnumerator()

Retourne un objet IEnumerator pour itérer au sein de l'ensemble de nœuds sélectionné.

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
MoveNext()

En cas de substitution dans une classe dérivée, déplace l’objet XPathNavigator retourné par la propriété Current vers le nœud suivant dans l’ensemble de nœuds sélectionné.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

ICloneable.Clone()

Crée un objet qui est une copie de l'instance actuelle.

Méthodes d’extension

Cast<TResult>(IEnumerable)

Effectue un cast des éléments d'un IEnumerable vers le type spécifié.

OfType<TResult>(IEnumerable)

Filtre les éléments d'un IEnumerable en fonction du type spécifié.

AsParallel(IEnumerable)

Active la parallélisation d'une requête.

AsQueryable(IEnumerable)

Convertit un IEnumerable en IQueryable.

S’applique à