XPathNavigator::Select Method (String^)
Selects a node set, using the specified XPath expression.
Assembly: System.Xml (in System.Xml.dll)
Parameters
- xpath
-
Type:
System::String^
A String representing an XPath expression.
Return Value
Type: System.Xml.XPath::XPathNodeIterator^An XPathNodeIterator pointing to the selected node set.
| Exception | Condition |
|---|---|
| ArgumentException | The XPath expression contains an error or its return type is not a node set. |
| XPathException | The XPath expression is not valid. |
The context for the selection is the position of the XPathNavigator when this method is called. After calling this method, the XPathNodeIterator returned represents the set of selected nodes. Use MoveNext method of the XPathNodeIterator to iterate over the selected node set.
The following C# code iterates over the selected set of nodes.
XPathNodeIterator iterator = nav.Select("/bookstore/book");
while (iterator.MoveNext())
{
Console.WriteLine(Iterator.Current.Name);
}
The following are important notes to consider when using the Select method.
You can still use any of the XPathNavigator object's navigation methods to move within the XPathNavigator. The XPathNavigator navigation methods are independent of the selected nodes in the XPathNodeIterator.
Future calls to the Select method return a new XPathNodeIterator object that points to the selected set of nodes that matches the new Select call. The two XPathNodeIterator objects are completely independent of each other.
If the XPath expression requires namespace resolution, use the Select overload, which takes an XPathExpression as its argument.
This method has no effect on the state of the XPathNavigator.
The following example uses the Select method to select a node set.
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 an 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>
Available since 1.1
Silverlight
Available since 4.0