When overridden in a derived class, moves the XPathNavigator object returned by the Current property to the next node in the selected node set.
Assembly: System.Xml (in System.Xml.dll)
Public MustOverride Function MoveNext As Boolean
public abstract bool MoveNext()
public: virtual bool MoveNext() abstract
abstract MoveNext : unit -> bool
Return Value
Type: System.Booleantrue if the XPathNavigator object moved to the next node; false if there are no more selected nodes.
The XPathNodeIterator object is positioned on the first node in the selected node set only after the initial call to the MoveNext method. The node set is created in document order. Therefore, calling the MoveNext method moves to the next node in document order.
There are two ways to iterate over an XPathNavigator collection by using the XPathNodeIterator class.
One way is to use the MoveNext method and then call Current to get the current XPathNavigator instance, as in the following example:
While nodeIterator.MoveNext() Dim n As XPathNavigator = nodeIterator.Current Console.WriteLine(n.LocalName) End While
while (nodeIterator.MoveNext())
{
XPathNavigator n = nodeIterator.Current;
Console.WriteLine(n.LocalName);
}
while (nodeIterator->MoveNext())
{
XPathNavigator^ n = nodeIterator->Current;
Console::WriteLine(n->LocalName);
}
Another way is to use a foreach loop to call the GetEnumerator method and use the returned IEnumerator interface to enumerate the nodes, as in the following example:
For Each n As XPathNavigator In nodeIterator Console.WriteLine(nav.LocalName) Next
foreach (XPathNavigator n in nodeIterator) Console.WriteLine(n.LocalName);
for each (XPathNavigator^ n in nodeIterator)
Console::WriteLine(n->LocalName);
You should either use the MoveNext method and Current or use the GetEnumerator method. Combining these two approaches can cause unexpected results. For example, if the MoveNext method is called first, and then the GetEnumerator method is called in the foreach loop, the foreach loop will not start enumerating the results from the beginning of the collection, but from the position after the Current method.
The following example uses the Select method of the XPathNavigator class to select a node set using the XPathNodeIterator class.
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
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);
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);
The example takes the books.xml file as input.
<?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>
.NET Framework
Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0.NET Framework Client Profile
Supported in: 4, 3.5 SP1Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.