XPath-expressies evalueren met XPathNavigator
De XPathNavigator klasse biedt de methode voor het Evaluate evalueren van een XPath-expressie. De Evaluate methode gebruikt een XPath-expressie, evalueert deze en retourneert een W3C XPath-type booleaanse waarde, getal, tekenreeks of knooppuntset op basis van het resultaat van de XPath-expressie.
De evaluate-methode
De Evaluate methode gebruikt een XPath-expressie, evalueert deze en retourneert een getypt resultaat van Booleaanse waarde (), Number (BooleanDouble), String (String) of Node Set (XPathNodeIterator). De Evaluate methode kan bijvoorbeeld worden gebruikt in een wiskundige methode. Met de volgende voorbeeldcode wordt de totale prijs van alle boeken in het books.xml
bestand berekend.
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
Dim query As XPathExpression = navigator.Compile("sum(//price/text())")
Dim total As Double = CType(navigator.Evaluate(query), Double)
Console.WriteLine(total)
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
XPathExpression query = navigator.Compile("sum(//price/text())");
Double total = (Double)navigator.Evaluate(query);
Console.WriteLine(total);
In het voorbeeld wordt het books.xml
bestand als invoer gebruikt.
<?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>
positie en laatste functies
De Evaluate methode is overbelast. Een van de Evaluate methoden gebruikt een XPathNodeIterator object als parameter. Deze specifieke Evaluate methode is identiek aan de Evaluate methode die alleen een XPathExpression object als parameter gebruikt, behalve dat een knooppuntsetargument de huidige context kan opgeven waarop de evaluatie moet worden uitgevoerd. Deze context is vereist voor het XPath position()
en last()
functies, omdat deze relatief zijn ten opzichte van het huidige contextknooppunt. Tenzij deze worden gebruikt als predicaat in een locatiestap, vereisen de position()
en last()
functies een verwijzing naar een knooppuntset om anders te kunnen worden geƫvalueerd, worden de position
functies geretourneerd.0
last