Udostępnij za pośrednictwem


XPathNodeIterator.MoveNext Metoda

Definicja

Po przesłonięciu w klasie pochodnej obiekt XPathNavigator zwracany przez Current właściwość do następnego węzła w wybranym zestawie węzłów.

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

Zwraca

Boolean

trueXPathNavigator jeśli obiekt został przeniesiony do następnego węzła; false jeśli nie ma więcej wybranych węzłów.

Przykłady

W poniższym przykładzie użyto Select metody XPathNavigator klasy do wybrania zestawu węzłów przy użyciu XPathNodeIterator klasy .

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

W przykładzie plik jest pobierany books.xml jako dane wejściowe.

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

Uwagi

Obiekt XPathNodeIterator jest umieszczony w pierwszym węźle w wybranym węźle ustawionym dopiero po początkowym MoveNext wywołaniu metody . Zestaw węzłów jest tworzony w kolejności dokumentów. W związku z tym MoveNext wywołanie metody przenosi się do następnego węzła w kolejności dokumentu.

Istnieją dwa sposoby iteracji XPathNavigator kolekcji przy użyciu XPathNodeIterator klasy .

Jednym ze sposobów jest użycie MoveNext metody , a następnie wywołanie Current metody w celu pobrania bieżącego XPathNavigator wystąpienia, jak w poniższym przykładzie:

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

Innym sposobem jest użycie foreach pętli w celu wywołania GetEnumerator metody i użycia zwróconego IEnumerator interfejsu w celu wyliczenia węzłów, jak w poniższym przykładzie:

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

Należy użyć MoveNext metody i Current lub użyć GetEnumerator metody . Połączenie tych dwóch podejść może spowodować nieoczekiwane wyniki. Jeśli na przykład MoveNext metoda jest wywoływana jako pierwsza, a następnie GetEnumerator metoda jest wywoływana w foreach pętli, foreach pętla nie rozpocznie wyliczania wyników od początku kolekcji, ale z pozycji po metodzie Current .

Dotyczy

Zobacz też