XPathNodeIterator.MoveNext Yöntem

Tanım

Türetilmiş bir sınıfta geçersiz kılındığında, özelliği tarafından XPathNavigator döndürülen nesneyi seçili düğüm kümesindeki bir sonraki düğüme taşırCurrent.

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

Döndürülenler

true nesne bir XPathNavigator sonraki düğüme taşındıysa; false başka seçili düğüm yoksa.

Örnekler

Aşağıdaki örnek, sınıfını Select kullanarak XPathNavigator bir düğüm kümesi seçmek için sınıfının yöntemini XPathNodeIterator kullanır.

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

Örnek, books.xml dosyasını giriş olarak alır.

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

Açıklamalar

XPathNodeIterator nesnesi, yalnızca yöntemine yapılan ilk çağrıdan sonra seçilen düğüm kümesindeki ilk düğüme MoveNext konumlandırılır. Düğüm kümesi belge sırasına göre oluşturulur. Bu nedenle, yöntemini çağırmak MoveNext belge sırasına göre sonraki düğüme geçer.

sınıfını kullanarak XPathNavigator bir XPathNodeIterator koleksiyon üzerinde yineleme yapmanın iki yolu vardır.

Yöntemlerden biri yöntemini kullanmak MoveNext ve ardından aşağıdaki örnekte olduğu gibi geçerli Current örneği almak için çağrısı XPathNavigator yapmaktır:

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

Bir diğer yol da yöntemini çağırmak foreach için bir GetEnumerator döngü kullanmak ve aşağıdaki örnekte olduğu gibi düğümleri numaralandırmak için döndürülen IEnumerator arabirimi kullanmaktır:

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

yöntemini ve MoveNextCurrent veya yöntemini kullanmanız GetEnumerator gerekir. Bu iki yaklaşımın birleştirilmesi beklenmeyen sonuçlara neden olabilir. Örneğin, yöntem önce çağrılır ve ardından yöntem döngüde MoveNext çağrılırsaGetEnumerator, foreach döngü sonuçları koleksiyonun başından değil, yöntemden sonraki konumdan numaralandırmaya foreach başlar.Current

Şunlara uygulanır

Ayrıca bkz.