Export (0) Print
Expand All

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 virtual Object Evaluate (
	string xpath,
	IXmlNamespaceResolver resolver
)
public Object Evaluate (
	String xpath, 
	IXmlNamespaceResolver resolver
)
public function Evaluate (
	xpath : String, 
	resolver : IXmlNamespaceResolver
) : Object
Not applicable.

Parameters

xpath

A string representing an XPath expression that can be evaluated.

resolver

The IXmlNamespaceResolver object used to resolve namespace prefixes in the XPath expression.

Return Value

The result of the expression (Boolean, number, string, or node set). This maps to Boolean, Double, String, or XPathNodeIterator objects respectively.

Exception typeCondition

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);
NoteNote:

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 = new XPathDocument("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();

XmlNamespaceManager manager = new 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.

<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>

Windows 98, Windows Server 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0

Community Additions

ADD
Show:
© 2014 Microsoft