XPathNavigator.MoveToFollowing Method (String, String, XPathNavigator)

Moves the XPathNavigator to the element with the local name and namespace URI specified, to the boundary specified, in document order.

Namespace:  System.Xml.XPath
Assembly:  System.Xml (in System.Xml.dll)

public virtual bool MoveToFollowing(
	string localName,
	string namespaceURI,
	XPathNavigator end
)

Parameters

localName
Type: System.String

The local name of the element.

namespaceURI
Type: System.String

The namespace URI of the element.

end
Type: System.Xml.XPath.XPathNavigator

The XPathNavigator object positioned on the element boundary which the current XPathNavigator will not move past while searching for the following element.

Return Value

Type: System.Boolean
true if the XPathNavigator moved successfully; otherwise false.

  • If the XPathNavigator boundary passed as a parameter is not positioned after the position of the current XPathNavigator it is ignored.

  • If the XPathNavigator boundary parameter is null, the following element with the local name and namespace URI specified is located in document order.

  • The MoveToFollowing methods cannot be used to move to attribute or namespace nodes. If the XPathNavigator boundary passed as a parameter is positioned over an attribute or namespace node, it is equivalent to the XPathNavigator boundary parameter having been positioned on the first child node of its parent element. This ensures that the parent element of the attribute or namespace node that the XPathNavigator boundary parameter is positioned on can be matched by this method.

  • If the MoveToFollowing method returns false, the position of the XPathNavigator is unchanged.

In the following example, the XPathNavigator is moved from the root of the contosoBooks.xml file to the following book element. A clone of the XPathNavigator object is made using the Clone method and is moved from the book element to the following first-name element. The cloned XPathNavigator, positioned on the first-name element, will be used as a boundary. Changes in the position of the cloned XPathNavigator do not affect the original XPathNavigator. The original XPathNavigator then attempts to move to the following price element using the MoveToFollowing method with the boundary passed as a parameter. This move fails because the following price element is beyond the boundary. The original XPathNavigator then attempts to move to the following title element which is before the boundary using the same method and succeeds.

XPathDocument document = new XPathDocument("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();

navigator.MoveToFollowing("book", "http://www.contoso.com/books");
XPathNavigator boundary = navigator.Clone();
boundary.MoveToFollowing("first-name", "http://www.contoso.com/books");

navigator.MoveToFollowing("price", "http://www.contoso.com/books", boundary);

Console.WriteLine("Position (after boundary): {0}", navigator.Name);
Console.WriteLine(navigator.OuterXml);

navigator.MoveToFollowing("title", "http://www.contoso.com/books", boundary);

Console.WriteLine("Position (before boundary): {0}", navigator.Name);
Console.WriteLine(navigator.OuterXml);

The example takes the contosoBooks.xml file as an input.

<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
    <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.6, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2015 Microsoft