XPathNavigator::Evaluate Method (String^, IXmlNamespaceResolver^)
Evaluates the specified XPath expression and returns the typed result, using the IXmlNamespaceResolver object specified to resolve namespace prefixes in the XPath expression.
Assembly: System.Xml (in System.Xml.dll)
Parameters
- xpath
-
Type:
System::String^
A string representing an XPath expression that can be evaluated.
- resolver
-
Type:
System.Xml::IXmlNamespaceResolver^
The IXmlNamespaceResolver object used to resolve namespace prefixes in the XPath expression.
Return Value
Type: System::Object^The result of the expression (Boolean, number, string, or node set). This maps to Boolean, Double, String, or XPathNodeIterator objects respectively.
| Exception | Condition |
|---|---|
| ArgumentException | The return type of the XPath expression is a node set. |
| XPathException | The XPath expression is not valid. |
The following C# code returns a number after converting the Price/text() node to a number and multiplying the value by 10.
XPathExpression expr = nav.Compile("Price/text()*10");
nav.Evaluate(expr);
Note |
|---|
The XPath position() and last() functions, unless used as a predicate in a location step, require a reference to a node set in order to be evaluated. In this case, you must use the overload which takes an XPathNodeIterator as an argument; otherwise, position() and last() return 0. |
This method has no effect on the state of the XPathNavigator.
The following example evaluates an XPath expression and returns a Double using the XmlNamespaceManager object specified to resolve namespace prefixes in the XPath expression.
XPathDocument^ document = gcnew XPathDocument("contosoBooks.xml"); XPathNavigator^ navigator = document->CreateNavigator(); XmlNamespaceManager^ manager = gcnew XmlNamespaceManager(navigator->NameTable); manager->AddNamespace("bk", "http://www.contoso.com/books"); Double total = (double)navigator->Evaluate("sum(descendant::bk:book/bk:price)", manager); Console::WriteLine("Total price for all books: {0}", total.ToString());
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>
Available since 2.0
Silverlight
Available since 4.0
