XPathNodeIterator.MoveNext Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Quando è sottoposto a override in una classe derivata, sposta l’oggetto XPathNavigator restituito dalla proprietà Current 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 è spostato al nodo successivo; false
se non sono presenti nodi selezionati.
Esempio
Nell'esempio XPathNavigator seguente viene usato il Select metodo della classe per selezionare un set di nodi usando 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
Nell'esempio il file books.xml
viene considerato 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 nel 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 nell'ordine del documento.
Esistono due modi per eseguire l'iterazione su 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())
{
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 metodo e usare l'interfaccia GetEnumerator restituita IEnumerator per enumerare i nodi, come nell'esempio seguente:
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
È consigliabile usare il MoveNext metodo e Current usare il GetEnumerator metodo . La combinazione di questi due approcci può causare risultati imprevisti. Ad esempio, se il metodo viene chiamato prima e quindi il MoveNext 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.