XPathNodeIterator.MoveNext Metod

Definition

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.

Gäller för

Se även