Partager via


XPathNodeIterator.MoveNext Méthode

Définition

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é.

public:
 abstract bool MoveNext();
public abstract bool MoveNext ();
abstract member MoveNext : unit -> bool
Public MustOverride Function MoveNext () As Boolean

Retours

Boolean

true si l’objet XPathNavigator a été déplacé vers le nœud suivant ; false en l’absence d’autres nœuds sélectionnés.

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

L’objet XPathNodeIterator est positionné sur le premier nœud du jeu de nœuds sélectionné uniquement après l’appel initial à la MoveNext méthode. L’ensemble de nœuds est créé dans l’ordre des documents. Par conséquent, l’appel de la MoveNext méthode passe au nœud suivant dans l’ordre du document.

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 façon 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 la MoveNext méthode et Current ou utiliser la GetEnumerator méthode. 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 que la GetEnumerator méthode 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.

S’applique à

Voir aussi