XPathNodeIterator Classe

Définition

Fournit un itérateur sur un ensemble de nœuds sélectionné.Provides an iterator over a selected set of nodes.

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

Exemples

L’exemple suivant utilise la méthode Select de la classe XPathNavigator pour sélectionner une ensemble de nœuds à l’aide de la classe XPathNodeIterator.The following example uses the Select method of the XPathNavigator class to select a node set using the XPathNodeIterator class.

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.The example takes the books.xml file as input.

  
<?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 objet XPathNodeIterator retourné par la classe XPathNavigator n’est pas positionné sur le premier nœud d’un ensemble de nœuds sélectionné.An XPathNodeIterator object returned by the XPathNavigator class is not positioned on the first node in a selected set of nodes. Un appel à la méthode MoveNext de la classe XPathNodeIterator doit être effectué pour positionner l’objet XPathNodeIterator sur le premier nœud du jeu de nœuds sélectionné.A call to the MoveNext method of the XPathNodeIterator class must be made to position the XPathNodeIterator object on the first node in the selected set of nodes.

Lorsque vous utilisez la XPathNodeIterator, si vous modifiez le nœud actuel ou l’un de ses ancêtres, votre position actuelle est perdue.When using the XPathNodeIterator, if you edit the current node or any of its ancestors, your current position is lost. 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 itérez au sein du tableau et modifiez les nœuds.If you want to edit a number of nodes that you have selected, create a XPathNavigator array, copy all of the nodes from the XPathNodeIterator into the array, then iterate through the array and modify the nodes.

Il existe deux façons d’effectuer une itération sur une collection de XPathNavigator à l’aide de la classe XPathNodeIterator.There are two ways to iterate over an XPathNavigator collection by using the XPathNodeIterator class.

L’une des méthodes consiste à utiliser la méthode MoveNext, puis à appeler Current pour récupérer l’instance XPathNavigator actuelle, comme dans l’exemple suivant :One way is to use the MoveNext method and then call Current to get the current XPathNavigator instance, as in the following example:

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 boucle foreach pour appeler la méthode GetEnumerator et à utiliser l’interface de IEnumerator retournée pour énumérer les nœuds, comme dans l’exemple suivant :Another way is to use a foreach loop to call the GetEnumerator method and use the returned IEnumerator interface to enumerate the nodes, as in the following example:

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.You should either use MoveNext and Current or use GetEnumerator. La combinaison de ces deux approches peut entraîner des résultats inattendus.Combining these two approaches can cause unexpected results. Par exemple, si la méthode MoveNext est appelée en premier, puis que la méthode GetEnumerator est appelée dans la boucle foreach, la boucle foreach ne commence pas à énumérer les résultats à partir du début de la collection, mais à partir de la position après la méthode Current.For example, if the MoveNext method is called first, and then the GetEnumerator method is called in the foreach loop, the foreach loop will not start enumerating the results from the beginning of the collection, but from the position after the Current method.

Notes pour les responsables de l’implémentation

Lorsque vous héritez de la classe XPathNodeIterator, vous devez substituer les membres suivants :When you inherit from the XPathNodeIterator class, you must override the following members:

Constructeurs

XPathNodeIterator()

Initialise une nouvelle instance de la classe XPathNodeIterator.Initializes a new instance of the XPathNodeIterator class.

Propriétés

Count

Obtient l'index du dernier nœud dans l'ensemble des nœuds sélectionnés.Gets the index of the last node in the selected set of nodes.

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.When overridden in a derived class, gets the XPathNavigator object for this XPathNodeIterator, positioned on the current context node.

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.When overridden in a derived class, gets the index of the current position in the selected set of nodes.

Méthodes

Clone()

En cas de substitution dans une classe dérivée, retourne un clone de cet objet XPathNodeIterator.When overridden in a derived class, returns a clone of this XPathNodeIterator object.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.Determines whether the specified object is equal to the current object.

(Hérité de Object)
GetEnumerator()

Retourne un objet IEnumerator pour itérer au sein de l'ensemble de nœuds sélectionné.Returns an IEnumerator object to iterate through the selected node set.

GetHashCode()

Sert de fonction de hachage par défaut.Serves as the default hash function.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.Creates a shallow copy of the current Object.

(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é.When overridden in a derived class, moves the XPathNavigator object returned by the Current property to the next node in the selected node set.

ToString()

Retourne une chaîne qui représente l'objet actif.Returns a string that represents the current object.

(Hérité de Object)

Implémentations d’interfaces explicites

ICloneable.Clone()

Crée un objet qui est une copie de l'instance actuelle.Creates a new object that is a copy of the current instance.

Méthodes d’extension

Cast<TResult>(IEnumerable)

Effectue un cast des éléments d'un IEnumerable vers le type spécifié.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filtre les éléments d'un IEnumerable en fonction du type spécifié.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Active la parallélisation d'une requête.Enables parallelization of a query.

AsQueryable(IEnumerable)

Convertit un IEnumerable en IQueryable.Converts an IEnumerable to an IQueryable.

S’applique à