Partage via


XPathNavigator.Evaluate Méthode

Définition

Évalue l'expression XPath spécifiée et retourne le résultat typé.

Surcharges

Evaluate(String)

Évalue l'expression XPath spécifiée et retourne le résultat typé.

Evaluate(XPathExpression)

Évalue XPathExpression spécifiée et retourne le résultat typé.

Evaluate(String, IXmlNamespaceResolver)

Évalue l'expression XPath spécifiée et retourne le résultat typé, à l'aide de l'objet IXmlNamespaceResolver spécifié pour trouver les préfixes d'espace de noms dans l'expression XPath.

Evaluate(XPathExpression, XPathNodeIterator)

Utilise le contexte fourni pour évaluer le XPathExpression et retourne le résultat typé.

Evaluate(String)

Évalue l'expression XPath spécifiée et retourne le résultat typé.

public:
 virtual System::Object ^ Evaluate(System::String ^ xpath);
public virtual object Evaluate (string xpath);
abstract member Evaluate : string -> obj
override this.Evaluate : string -> obj
Public Overridable Function Evaluate (xpath As String) As Object

Paramètres

xpath
String

Chaîne représentant une expression XPath qui peut être évaluée.

Retours

Object

Résultat de l'expression (booléen, nombre, chaîne ou jeu de nœuds). Ceci mappe aux objets Boolean, Double, String ou XPathNodeIterator, respectivement.

Exceptions

Le type de retour de l'expression XPath est un ensemble de nœuds.

L’expression XPath n’est pas valide.

Exemples

L’exemple suivant évalue une expression XPath et retourne un Double.

XPathDocument^ document = gcnew XPathDocument("books.xml");
XPathNavigator^ navigator = document->CreateNavigator();

Double total = (double)navigator->Evaluate("sum(descendant::book/price)");
Console::WriteLine("Total price for all books: {0}", total.ToString());
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();

Double total = (double)navigator.Evaluate("sum(descendant::book/price)");
Console.WriteLine("Total price for all books: {0}", total.ToString());
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim total As Double = CType(navigator.Evaluate("sum(descendant::book/price)"), Double)
Console.WriteLine("Total price for all books: {0}", total.ToString())

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>  

Remarques

Le code C# suivant convertit le Price/text() nœud en nombre, le multiplie par 10 et retourne la valeur résultante.

nav.Evaluate("Price/text()*10");  

Notes

Les fonctions XPath position() et last(), sauf si elles sont utilisées comme prédicat dans une étape d’emplacement, nécessitent une référence à un jeu de nœuds afin d’être évaluées. Dans ce cas, vous devez utiliser la surcharge qui prend un XPathNodeIterator argument ; sinon, position() et last() retournent 0.

Cette méthode n’a aucun effet sur l’état du XPathNavigator.

Voir aussi

S’applique à

Evaluate(XPathExpression)

Évalue XPathExpression spécifiée et retourne le résultat typé.

public:
 virtual System::Object ^ Evaluate(System::Xml::XPath::XPathExpression ^ expr);
public virtual object Evaluate (System.Xml.XPath.XPathExpression expr);
abstract member Evaluate : System.Xml.XPath.XPathExpression -> obj
override this.Evaluate : System.Xml.XPath.XPathExpression -> obj
Public Overridable Function Evaluate (expr As XPathExpression) As Object

Paramètres

expr
XPathExpression

Élément XPathExpression qui peut être évalué.

Retours

Object

Résultat de l'expression (booléen, nombre, chaîne ou jeu de nœuds). Ceci mappe aux objets Boolean, Double, String ou XPathNodeIterator, respectivement.

Exceptions

Le type de retour de l'expression XPath est un ensemble de nœuds.

L’expression XPath n’est pas valide.

Exemples

L’exemple suivant évalue une XPathExpression valeur et retourne un Double.

XPathDocument^ document = gcnew XPathDocument("books.xml");
XPathNavigator^ navigator = document->CreateNavigator();

XPathExpression^ query = navigator->Compile("sum(descendant::book/price)");

Double total = (double)navigator->Evaluate(query);
Console::WriteLine("Total price for all books: {0}", total.ToString());
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();

XPathExpression query = navigator.Compile("sum(descendant::book/price)");

Double total = (double)navigator.Evaluate(query);
Console.WriteLine("Total price for all books: {0}", total.ToString());
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim query As XPathExpression = navigator.Compile("sum(descendant::book/price)")

Dim total As Double = CType(navigator.Evaluate(query), Double)
Console.WriteLine("Total price for all books: {0}", total.ToString())

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>  

Remarques

Le code C# suivant retourne un nombre après avoir converti le Price/text() nœud en nombre et multiplié la valeur par 10.

XPathExpression expr = nav.Compile("Price/text()*10");  
nav.Evaluate(expr);  

Notes

Les fonctions XPath position() et last(), sauf si elles sont utilisées comme prédicat dans une étape d’emplacement, nécessitent une référence à un jeu de nœuds afin d’être évaluées. Dans ce cas, vous devez utiliser la surcharge qui prend un XPathNodeIterator argument ; sinon, position() et last() retournent 0.

Cette méthode n’a aucun effet sur l’état du XPathNavigator.

Voir aussi

S’applique à

Evaluate(String, IXmlNamespaceResolver)

Évalue l'expression XPath spécifiée et retourne le résultat typé, à l'aide de l'objet IXmlNamespaceResolver spécifié pour trouver les préfixes d'espace de noms dans l'expression XPath.

public:
 virtual System::Object ^ Evaluate(System::String ^ xpath, System::Xml::IXmlNamespaceResolver ^ resolver);
public virtual object Evaluate (string xpath, System.Xml.IXmlNamespaceResolver? resolver);
public virtual object Evaluate (string xpath, System.Xml.IXmlNamespaceResolver resolver);
abstract member Evaluate : string * System.Xml.IXmlNamespaceResolver -> obj
override this.Evaluate : string * System.Xml.IXmlNamespaceResolver -> obj
Public Overridable Function Evaluate (xpath As String, resolver As IXmlNamespaceResolver) As Object

Paramètres

xpath
String

Chaîne représentant une expression XPath qui peut être évaluée.

resolver
IXmlNamespaceResolver

Objet IXmlNamespaceResolver permettant de trouver les préfixes d'espace de noms dans l'expression XPath.

Retours

Object

Résultat de l'expression (booléen, nombre, chaîne ou jeu de nœuds). Ceci mappe aux objets Boolean, Double, String ou XPathNodeIterator, respectivement.

Exceptions

Le type de retour de l'expression XPath est un ensemble de nœuds.

L’expression XPath n’est pas valide.

Exemples

L’exemple suivant évalue une expression XPath et retourne une Double utilisation de l’objet XmlNamespaceManager spécifié pour résoudre les préfixes d’espace de noms dans l’expression XPath.

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

L'exemple prend le fichier contosoBooks.xml comme entrée.

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

Remarques

Le code C# suivant retourne un nombre après avoir converti le Price/text() nœud en nombre et multiplié la valeur par 10.

XPathExpression expr = nav.Compile("Price/text()*10");  
nav.Evaluate(expr);  

Notes

Les fonctions XPath position() et last(), sauf si elles sont utilisées comme prédicat dans une étape d’emplacement, nécessitent une référence à un jeu de nœuds afin d’être évaluées. Dans ce cas, vous devez utiliser la surcharge qui prend un XPathNodeIterator argument ; sinon, position() et last() retournent 0.

Cette méthode n’a aucun effet sur l’état du XPathNavigator.

S’applique à

Evaluate(XPathExpression, XPathNodeIterator)

Utilise le contexte fourni pour évaluer le XPathExpression et retourne le résultat typé.

public:
 virtual System::Object ^ Evaluate(System::Xml::XPath::XPathExpression ^ expr, System::Xml::XPath::XPathNodeIterator ^ context);
public virtual object Evaluate (System.Xml.XPath.XPathExpression expr, System.Xml.XPath.XPathNodeIterator? context);
public virtual object Evaluate (System.Xml.XPath.XPathExpression expr, System.Xml.XPath.XPathNodeIterator context);
abstract member Evaluate : System.Xml.XPath.XPathExpression * System.Xml.XPath.XPathNodeIterator -> obj
override this.Evaluate : System.Xml.XPath.XPathExpression * System.Xml.XPath.XPathNodeIterator -> obj
Public Overridable Function Evaluate (expr As XPathExpression, context As XPathNodeIterator) As Object

Paramètres

expr
XPathExpression

Élément XPathExpression qui peut être évalué.

context
XPathNodeIterator

XPathNodeIterator qui pointe vers l'ensemble des nœuds sélectionnés auquel doit s'appliquer l'évaluation.

Retours

Object

Résultat de l'expression (booléen, nombre, chaîne ou jeu de nœuds). Ceci mappe aux objets Boolean, Double, String ou XPathNodeIterator, respectivement.

Exceptions

Le type de retour de l'expression XPath est un ensemble de nœuds.

L’expression XPath n’est pas valide.

Exemples

L’exemple suivant évalue une XPathExpression valeur et retourne un Double nœud à l’aide du Current XPathNodeIterator nœud de contexte.

XPathDocument^ document = gcnew XPathDocument("books.xml");
XPathNavigator^ navigator = document->CreateNavigator();

XPathNodeIterator^ nodes = navigator->Select("//book");
XPathExpression^ query = nodes->Current->Compile("sum(descendant::price)");

Double total = (double)navigator->Evaluate(query, nodes);
Console::WriteLine("Total price for all books: {0}", total.ToString());
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();

XPathNodeIterator nodes = navigator.Select("//book");
XPathExpression query = nodes.Current.Compile("sum(descendant::price)");

Double total = (double)navigator.Evaluate(query, nodes);
Console.WriteLine("Total price for all books: {0}", total.ToString());
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim nodes As XPathNodeIterator = navigator.Select("//book")
Dim query As XPathExpression = nodes.Current.Compile("sum(descendant::price)")

Dim total As Double = CType(navigator.Evaluate(query, nodes), Double)
Console.WriteLine("Total price for all books: {0}", total.ToString())

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>  

Remarques

L’expression est évaluée à l’aide du Current nœud du XPathNodeIterator nœud de contexte. Si context c’est nullle cas, nœud sur lequel le XPathNavigator nœud est actuellement positionné est utilisé comme nœud de contexte.

Les fonctions position() et last(), sauf si elles sont utilisées comme prédicat dans une étape d’emplacement, retournent toujours 0 dans les conditions suivantes :

Étant donné que les fonctions position() et last() fonctionnent sur le nœud actuel, vous ne devez pas utiliser la Current propriété pour vous éloigner du jeu de nœuds sélectionné. Cela peut invalider l’état du XPathNavigator.

Cette méthode n’a aucun effet sur l’état du XPathNavigator.

S’applique à