Sdílet prostřednictvím


XPathNodeIterator.MoveNext Metoda

Definice

Při přepsání v odvozené třídě přesune XPathNavigator objekt vrácený Current vlastností na další uzel ve vybrané sadě uzlů.

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

Návraty

true pokud se XPathNavigator objekt přesunul na další uzel; false pokud už nejsou vybrané uzly.

Příklady

Následující příklad používá Select metodu XPathNavigator třídy k výběru sady uzlů pomocí XPathNodeIterator třídy.

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

Příklad přebírá books.xml soubor jako vstup.

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

Poznámky

Objekt XPathNodeIterator je umístěn na prvním uzlu ve vybrané sadě uzlů až po počátečním volání MoveNext metody. Sada uzlů se vytvoří v pořadí dokumentů. Proto volání MoveNext metody přesune na další uzel v pořadí dokumentu.

Existují dva způsoby, jak iterovat kolekci XPathNavigator pomocí XPathNodeIterator třídy.

Jedním ze způsobů je použít metodu MoveNext a pak volat Current k získání aktuální XPathNavigator instance, jako v následujícím příkladu:

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

Dalším způsobem je použití foreach smyčky k volání GetEnumerator metody a použití vráceného IEnumerator rozhraní k vytvoření výčtu uzlů, jako v následujícím příkladu:

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

Tuto metodu MoveNextCurrent byste měli použít nebo použít GetEnumerator . Kombinace těchto dvou přístupů může způsobit neočekávané výsledky. Pokud je například MoveNext metoda volána jako první a metoda GetEnumerator je volána ve foreach smyčce, foreach smyčka nezačne výčet výsledků od začátku kolekce, ale z pozice za metodou Current .

Platí pro

Viz také