Compartir a través de


XPathNodeIterator.MoveNext Método

Definición

Cuando se reemplaza en una clase derivada, desplaza el objeto XPathNavigator devuelto por la propiedad Current al siguiente nodo del conjunto de nodos seleccionado.

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

Devoluciones

Boolean

true si el objeto XPathNavigator se desplazó al siguiente nodo; false si no hay más nodos seleccionados.

Ejemplos

En el ejemplo siguiente se usa el Select método de la XPathNavigator clase para seleccionar un conjunto de nodos mediante la XPathNodeIterator clase .

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

En el ejemplo se toma como entrada el archivo books.xml.

<?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>  

Comentarios

El XPathNodeIterator objeto se coloca en el primer nodo del nodo seleccionado establecido solo después de la llamada inicial al MoveNext método . El conjunto de nodos se crea en orden de documento. Por lo tanto, al llamar al MoveNext método se mueve al siguiente nodo en orden de documento.

Hay dos maneras de iterar por una XPathNavigator colección mediante la XPathNodeIterator clase .

Una manera es usar el MoveNext método y, a continuación, llamar Current a para obtener la instancia actual XPathNavigator , como en el ejemplo siguiente:

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

Otra manera es usar un foreach bucle para llamar al GetEnumerator método y usar la interfaz devuelta IEnumerator para enumerar los nodos, como en el ejemplo siguiente:

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

Debe usar el MoveNext método y Current o usar el GetEnumerator método . La combinación de estos dos enfoques puede provocar resultados inesperados. Por ejemplo, si se llama primero al MoveNext método y, a continuación, se llama al GetEnumerator método en el foreach bucle , el foreach bucle no comenzará a enumerar los resultados desde el principio de la colección, sino desde la posición después del Current método .

Se aplica a

Consulte también