XPathNodeIterator.MoveNext Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Türetilmiş bir sınıfta geçersiz kılındığında, özelliği tarafından Current döndürülen nesneyi seçili düğüm kümesindeki bir sonraki düğüme taşırXPathNavigator.
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 XPathNavigator kullanarak XPathNodeIterator bir düğüm kümesi seçmek için sınıfının yöntemini kullanır.
XPathDocument^ document = gcnew 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);
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, dosyayı giriş olarak alır books.xml
.
<?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 XPathNodeIterator bir XPathNavigator 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 XPathNavigator örneği almak için çağrısı Current yapmaktır:
while (nodeIterator->MoveNext())
{
XPathNavigator^ n = nodeIterator->Current;
Console::WriteLine(n->LocalName);
}
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 GetEnumerator için bir foreach
döngü kullanmak ve aşağıdaki örnekte olduğu gibi düğümleri listelemek için döndürülen IEnumerator arabirimi kullanmaktır:
for each (XPathNavigator^ n in nodeIterator)
Console::WriteLine(n->LocalName);
foreach (XPathNavigator n in nodeIterator)
Console.WriteLine(n.LocalName);
For Each n As XPathNavigator In nodeIterator
Console.WriteLine(nav.LocalName)
Next
yöntemini ve MoveNext Current 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 foreach
çağrılırsaMoveNext, foreach
döngü sonuçları koleksiyonun başından değil yöntemin sonraki konumundan numaralandırmaya Current başlar.GetEnumerator