Évaluation d'expressions XPath à l'aide de XPathNavigator
La classe XPathNavigator fournit la méthode Evaluate permettant d'évaluer une expression XPath. La méthode Evaluate prend une expression XPath, l'évalue et retourne le type XPath W3C booléen, nombre, chaîne ou collection de nœuds selon le résultat de l'expression XPath.
Méthode d'évaluation
La méthode Evaluate prend une expression XPath, l'évalue et retourne un résultat typé tel que booléen (Boolean), nombre (Double), chaîne (String) ou collection de nœuds (XPathNodeIterator). Par exemple, la méthode Evaluate peut être utilisée dans une méthode mathématique. L'exemple de code suivant calcule le prix total de tous les livres du fichier books.xml.
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);
L'exemple prend le fichier books.xml comme entrée.
<?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>
Fonctions position et last
La méthode Evaluate est surchargée. L'une des méthodes Evaluate prend un objet XPathNodeIterator comme paramètre. Cette méthode Evaluate particulière est identique à la méthode Evaluate qui ne prend qu'un objet XPathExpression comme paramètre, si ce n'est qu'elle permet à un argument node set de spécifier le contexte actuel sur lequel effectuer l'évaluation. Ce contexte est obligatoire pour les fonctions XPath position() et last() car celles-ci se rapportent au nœud de contexte actuel. À moins d'être utilisées comme prédicats dans une étape de localisation, l'évaluation des fonctions position() et last() nécessite une référence à une collection de nœuds, sinon les fonctions position et last retournent 0.
Voir aussi
Référence
Concepts
Traitement des données XML à l'aide du modèle de données XPath
Sélection de données XML à l'aide de XPathNavigator
Mise en correspondance de nœuds avec XPathNavigator
Types de nœuds reconnus avec les requêtes XPath