Evaluate Method (String, IXmlNamespaceResolver)

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.

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

Public Overridable Function Evaluate (
	xpath As String,
	resolver As IXmlNamespaceResolver
) As Object


Type: System.String

A string representing an XPath expression that can be evaluated.

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

The return type of the XPath expression is a node set.


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");

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.

Dim document As XPathDocument = New XPathDocument("contosoBooks.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim manager As XmlNamespaceManager = New XmlNamespaceManager(navigator.NameTable)
manager.AddNamespace("bk", "http://www.contoso.com/books")

Dim total As Double = CType(navigator.Evaluate("sum(descendant::bk:book/bk:price)", manager), Double)
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>
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
        <title>The Confidence Man</title>
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
        <title>The Gorgias</title>

Universal Windows Platform
Available since 10
.NET Framework
Available since 2.0
Available since 4.0
Return to top
© 2015 Microsoft