Freigeben über


XPathNodeIterator.MoveNext Methode

Definition

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird das XPathNavigator von der Current Eigenschaft zurückgegebene Objekt in den nächsten Knoten im ausgewählten Knotensatz verschoben.

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

Gibt zurück

true wenn das XPathNavigator Objekt in den nächsten Knoten verschoben wurde; false wenn keine weiteren ausgewählten Knoten vorhanden sind.

Beispiele

Im folgenden Beispiel wird die Select Methode der XPathNavigator Klasse verwendet, um einen Knotensatz mithilfe der XPathNodeIterator Klasse auszuwählen.

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

Im Beispiel wird die books.xml Datei als Eingabe verwendet.

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

Hinweise

Das XPathNodeIterator Objekt wird nur nach dem anfänglichen Aufruf der MoveNext Methode auf dem ersten Knoten im ausgewählten Knoten positioniert. Der Knotensatz wird in der Dokumentreihenfolge erstellt. Daher wird das Aufrufen der MoveNext Methode zum nächsten Knoten in der Dokumentreihenfolge verschoben.

Es gibt zwei Möglichkeiten zum Durchlaufen einer XPathNavigator Auflistung mithilfe der XPathNodeIterator Klasse.

Eine Möglichkeit besteht darin, die MoveNext Methode zu verwenden und dann aufzurufen Current , um die aktuelle XPathNavigator Instanz abzurufen, wie im folgenden Beispiel gezeigt:

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

Eine weitere Möglichkeit besteht darin, eine foreach Schleife zum Aufrufen der GetEnumerator Methode zu verwenden und die zurückgegebene IEnumerator Schnittstelle zum Aufzählen der Knoten zu verwenden, wie im folgenden Beispiel gezeigt:

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

Sie sollten entweder die MoveNext Methode und Current die Methode verwenden oder die GetEnumerator Methode verwenden. Die Kombination dieser beiden Ansätze kann zu unerwarteten Ergebnissen führen. Wenn die MoveNext Methode beispielsweise zuerst aufgerufen wird und die GetEnumerator Methode in der foreach Schleife aufgerufen wird, beginnt die foreach Schleife nicht mit dem Aufzählen der Ergebnisse vom Anfang der Auflistung, sondern von der Position nach der Current Methode.

Gilt für:

Weitere Informationen