XPathNodeIterator.MoveNext Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Beim Überschreiben in einer abgeleiteten Klasse wird das von der Current-Eigenschaft zurückgegebene XPathNavigator-Objekt auf den nächsten Knoten in der ausgewählten Knotengruppe 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 auf den nächsten Knoten verschoben wurde. false
, wenn keine weiteren ausgewählten Knoten vorhanden sind.
Beispiele
Im folgenden Beispiel wird die Select Methode der Klasse verwendet, um einen Knotensatz mithilfe der XPathNodeIterator XPathNavigator Klasse auszuwählen.
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
In diesem Beispiel wird die Datei books.xml
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 auf dem ersten Knoten im ausgewählten Knoten positioniert, der nur nach dem anfänglichen Aufruf der MoveNext Methode festgelegt ist. 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 Current die aktuelle XPathNavigator Instanz abzurufen, wie im folgenden Beispiel:
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
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 wie im folgenden Beispiel zu verwenden:
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
Sie sollten entweder die MoveNext Methode verwenden und Current 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 der Aufzählung der Ergebnisse vom Anfang der Auflistung, sondern von der Position nach der Current Methode.