Condividi tramite


XPathNodeIterator.MoveNext Metodo

Definizione

Quando sottoposto a override in una classe derivata, sposta l'oggetto XPathNavigator restituito dalla Current proprietà al nodo successivo nel set di nodi selezionato.

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 nel nodo successivo; false se non sono presenti più nodi selezionati.

Esempio

Nell'esempio seguente viene usato il Select metodo della XPathNavigator classe per selezionare un set di nodi usando la XPathNodeIterator classe .

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'esempio accetta il file books.xml come 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'oggetto XPathNodeIterator viene posizionato sul primo nodo del set di nodi selezionato solo dopo la chiamata iniziale al MoveNext metodo . Il set di nodi viene creato nell'ordine dei documenti. Pertanto, la chiamata al MoveNext metodo passa al nodo successivo in ordine di documento.

Esistono due modi per scorrere una XPathNavigator raccolta usando la XPathNodeIterator classe .

Un modo consiste nell'usare il MoveNext metodo e quindi chiamare Current per ottenere l'istanza corrente XPathNavigator , come nell'esempio seguente:

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

foreach (XPathNavigator n in nodeIterator)
    Console.WriteLine(n.LocalName);
For Each n As XPathNavigator In nodeIterator
    Console.WriteLine(nav.LocalName)
Next

È consigliabile usare il MoveNext metodo e Current o usare il GetEnumerator metodo . La combinazione di questi due approcci può causare risultati imprevisti. Ad esempio, se il MoveNext metodo viene chiamato per primo e quindi il GetEnumerator metodo viene chiamato nel foreach ciclo , il foreach ciclo non inizierà ad enumerare i risultati dall'inizio della raccolta, ma dalla posizione dopo il Current metodo .

Si applica a

Vedi anche