XPathNodeIterator.MoveNext XPathNodeIterator.MoveNext XPathNodeIterator.MoveNext XPathNodeIterator.MoveNext Method

Definizione

Quando sottoposto a override in una classe derivata, sposta l'oggetto XPathNavigator restituito dalla proprietà Current sul nodo di testo nell'insieme di nodi selezionato.When overridden in a derived class, moves the XPathNavigator object returned by the Current property to the next node in the selected node set.

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

Restituisce

true se l'oggetto XPathNavigator è stato spostato al nodo successivo, false se non esistono altri nodi selezionati.true if the XPathNavigator object moved to the next node; false if there are no more selected nodes.

Esempi

Nell'esempio seguente viene utilizzato Select il metodo XPathNavigator della classe per selezionare un set di nodi utilizzando XPathNodeIterator la classe.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

Nell'esempio il file books.xml viene considerato come input.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>  

Commenti

L' XPathNodeIterator oggetto è posizionato sul primo nodo nel set di nodi selezionato solo dopo la chiamata iniziale MoveNext al metodo.The XPathNodeIterator object is positioned on the first node in the selected node set only after the initial call to the MoveNext method. Il set di nodi viene creato in base all'ordine dei documenti.The node set is created in document order. Pertanto, la chiamata MoveNext del metodo passa al nodo successivo nell'ordine del documento.Therefore, calling the MoveNext method moves to the next node in document order.

Esistono due modi per eseguire l'iterazione XPathNavigator di una raccolta usando XPathNodeIterator la classe.There are two ways to iterate over an XPathNavigator collection by using the XPathNodeIterator class.

Un modo consiste nell'usare il MoveNext metodo e quindi chiamare Current per ottenere l'istanza XPathNavigator corrente, come nell'esempio seguente: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

Un altro modo consiste nell'usare foreach un ciclo per chiamare GetEnumerator il metodo e usare l' IEnumerator interfaccia restituita per enumerare i nodi, come nell'esempio seguente: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

È necessario usare il MoveNext metodo e Current o usare il GetEnumerator metodo.You should either use the MoveNext method and Current or use the GetEnumerator method. La combinazione di questi due approcci può causare risultati imprevisti.Combining these two approaches can cause unexpected results. Se, ad esempio, MoveNext il metodo viene chiamato per primo e il GetEnumerator foreach metodo viene chiamato nel ciclo, il foreach ciclo non inizierà a enumerare i risultati dall'inizio della raccolta, ma dalla posizione successiva al Current metodo.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.

Si applica a

Vedi anche