XPathNodeIterator.MoveNext Methode

Definitie

Wanneer het object wordt overschreven in een afgeleide klasse, verplaatst u het XPathNavigator object dat door de Current eigenschap wordt geretourneerd naar het volgende knooppunt in de geselecteerde knooppuntset.

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

Retouren

true als het XPathNavigator object is verplaatst naar het volgende knooppunt; false als er geen geselecteerde knooppunten meer zijn.

Voorbeelden

In het volgende voorbeeld wordt de Select methode van de XPathNavigator klasse gebruikt om een knooppuntset te selecteren met behulp van de XPathNodeIterator klasse.

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 het voorbeeld wordt het books.xml bestand als invoer gebruikt.

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

Opmerkingen

Het XPathNodeIterator object bevindt zich op het eerste knooppunt in de geselecteerde knooppuntset pas na de eerste aanroep naar de MoveNext methode. De knooppuntset wordt gemaakt in documentvolgorde. Daarom wordt het aanroepen van de MoveNext methode verplaatst naar het volgende knooppunt in documentvolgorde.

Er zijn twee manieren om een XPathNavigator verzameling te herhalen met behulp van de XPathNodeIterator klasse.

Een manier is om de MoveNext methode te gebruiken en vervolgens aan te roepen Current om het huidige XPathNavigator exemplaar op te halen, zoals in het volgende voorbeeld:

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

Een andere manier is om een foreach lus te gebruiken om de GetEnumerator methode aan te roepen en de geretourneerde IEnumerator interface te gebruiken om de knooppunten op te sommen, zoals in het volgende voorbeeld:

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

U moet de MoveNext methode gebruiken en Current of de GetEnumerator methode gebruiken. Het combineren van deze twee benaderingen kan onverwachte resultaten veroorzaken. Als de MoveNext methode bijvoorbeeld eerst wordt aangeroepen en de GetEnumerator methode vervolgens in de foreach lus wordt aangeroepen, begint de foreach lus niet met het inventariseren van de resultaten vanaf het begin van de verzameling, maar vanaf de positie na de Current methode.

Van toepassing op

Zie ook