XPathNodeIterator.MoveNext Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
När det åsidosättas i en härledd klass flyttas objektet XPathNavigator som returneras av Current egenskapen till nästa nod i den valda noduppsättningen.
public:
abstract bool MoveNext();
public abstract bool MoveNext();
abstract member MoveNext : unit -> bool
Public MustOverride Function MoveNext () As Boolean
Returer
true om objektet XPathNavigator flyttades till nästa nod. false Om det inte finns fler valda noder.
Exempel
I följande exempel används Select -metoden för XPathNavigator klassen för att välja en noduppsättning med hjälp av XPathNodeIterator klassen .
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
Exemplet tar books.xml-filen som indata.
<?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>
Kommentarer
Objektet XPathNodeIterator placeras på den första noden i den valda noduppsättningen först efter det första anropet MoveNext till metoden. Noduppsättningen skapas i dokumentordning. Därför flyttas anropet MoveNext till nästa nod i dokumentordning.
Det finns två sätt att iterera över en XPathNavigator samling med hjälp XPathNodeIterator av klassen.
Ett sätt är att använda MoveNext metoden och sedan anropa Current för att hämta den aktuella XPathNavigator instansen, som i följande exempel:
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
Ett annat sätt är att använda en foreach loop för att anropa GetEnumerator metoden och använda det returnerade IEnumerator gränssnittet för att räkna upp noderna, som i följande exempel:
foreach (XPathNavigator n in nodeIterator)
Console.WriteLine(n.LocalName);
For Each n As XPathNavigator In nodeIterator
Console.WriteLine(nav.LocalName)
Next
Du bör antingen använda MoveNext metoden och Current eller använda GetEnumerator metoden. Att kombinera dessa två metoder kan orsaka oväntade resultat. Om MoveNext metoden till exempel anropas först och metoden GetEnumerator anropas i loopen foreach , börjar loopen foreach inte räkna upp resultaten från början av samlingen, utan från positionen efter Current metoden.