XPathNavigator.Evaluate Metodo

Definizione

Valuta l'espressione XPath specificata e restituisce il risultato tipizzato.

Overload

Evaluate(String)

Valuta l'espressione XPath specificata e restituisce il risultato tipizzato.

Evaluate(XPathExpression)

Valuta la classe XPathExpression e restituisce il risultato tipizzato.

Evaluate(String, IXmlNamespaceResolver)

Valuta l'espressione XPath specificata e restituisce il risultato tipizzato utilizzando l'oggetto IXmlNamespaceResolver specificato per risolvere i prefissi degli spazi dei nomi contenuti nell'espressione XPath.

Evaluate(XPathExpression, XPathNodeIterator)

Utilizza il contesto specificato per valutare l'oggetto XPathExpression e restituisce il risultato tipizzato.

Evaluate(String)

Source:
XPathNavigator.cs
Source:
XPathNavigator.cs
Source:
XPathNavigator.cs

Valuta l'espressione XPath specificata e restituisce il risultato tipizzato.

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

Parametri

xpath
String

Stringa che rappresenta un'espressione XPath valutabile.

Restituisce

Risultato dell'espressione (valore booleano, numero, stringa o set di nodi). Mappa rispettivamente agli oggetti Boolean, Double, String o XPathNodeIterator.

Eccezioni

Il tipo restituito dell'espressione XPath è un insieme di nodi.

L’espressione XPath non è valida.

Esempio

Nell'esempio seguente viene valutata un'espressione XPath e restituisce un Doubleoggetto .

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

Nell'esempio il file books.xml viene considerato come input.

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

Commenti

Il codice C# seguente converte il Price/text() nodo in un numero, lo moltiplica per 10 e restituisce il valore risultante.

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

Nota

Le funzioni XPath position() e last(), a meno che non venga usato come predicato in un passaggio del percorso, richiedono un riferimento a un set di nodi per essere valutato. In questo caso, è necessario usare l'overload che accetta XPathNodeIterator come argomento; in caso contrario, posizione() e last() restituiscono 0.

Questo metodo non ha alcun effetto sullo stato dell'oggetto XPathNavigator.

Vedi anche

Si applica a

Evaluate(XPathExpression)

Source:
XPathNavigator.cs
Source:
XPathNavigator.cs
Source:
XPathNavigator.cs

Valuta la classe XPathExpression e restituisce il risultato tipizzato.

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

Parametri

expr
XPathExpression

Oggetto XPathExpression che può essere valutato.

Restituisce

Risultato dell'espressione (valore booleano, numero, stringa o set di nodi). Mappa rispettivamente agli oggetti Boolean, Double, String o XPathNodeIterator.

Eccezioni

Il tipo restituito dell'espressione XPath è un insieme di nodi.

L’espressione XPath non è valida.

Esempio

Nell'esempio seguente viene valutato un XPathExpression oggetto e viene restituito un Doubleoggetto .

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

Nell'esempio il file books.xml viene considerato come input.

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

Commenti

Il codice C# seguente restituisce un numero dopo aver convertito il Price/text() nodo in un numero e moltiplicando il valore per 10.

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

Nota

Le funzioni XPath position() e last(), a meno che non venga usato come predicato in un passaggio del percorso, richiedono un riferimento a un set di nodi per essere valutato. In questo caso, è necessario usare l'overload che accetta XPathNodeIterator come argomento; in caso contrario, posizione() e last() restituiscono 0.

Questo metodo non ha alcun effetto sullo stato dell'oggetto XPathNavigator.

Vedi anche

Si applica a

Evaluate(String, IXmlNamespaceResolver)

Source:
XPathNavigator.cs
Source:
XPathNavigator.cs
Source:
XPathNavigator.cs

Valuta l'espressione XPath specificata e restituisce il risultato tipizzato utilizzando l'oggetto IXmlNamespaceResolver specificato per risolvere i prefissi degli spazi dei nomi contenuti nell'espressione 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

Parametri

xpath
String

Stringa che rappresenta un'espressione XPath valutabile.

resolver
IXmlNamespaceResolver

Oggetto IXmlNamespaceResolver utilizzato per la risoluzione dei prefissi degli spazi dei nomi contenuti nell'espressione XPath.

Restituisce

Risultato dell'espressione (valore booleano, numero, stringa o set di nodi). Mappa rispettivamente agli oggetti Boolean, Double, String o XPathNodeIterator.

Eccezioni

Il tipo restituito dell'espressione XPath è un insieme di nodi.

L’espressione XPath non è valida.

Esempio

Nell'esempio seguente viene valutata un'espressione XPath e viene restituito un Double oggetto usando l'oggetto XmlNamespaceManager specificato per risolvere i prefissi dello spazio dei nomi nell'espressione 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())

Nell'esempio il file contosoBooks.xml viene considerato come 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>  
        <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>  

Commenti

Il codice C# seguente restituisce un numero dopo aver convertito il Price/text() nodo in un numero e moltiplicando il valore per 10.

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

Nota

Le funzioni XPath position() e last(), a meno che non venga usato come predicato in un passaggio del percorso, richiedono un riferimento a un set di nodi per essere valutato. In questo caso, è necessario usare l'overload che accetta XPathNodeIterator come argomento; in caso contrario, posizione() e last() restituiscono 0.

Questo metodo non ha alcun effetto sullo stato dell'oggetto XPathNavigator.

Si applica a

Evaluate(XPathExpression, XPathNodeIterator)

Source:
XPathNavigator.cs
Source:
XPathNavigator.cs
Source:
XPathNavigator.cs

Utilizza il contesto specificato per valutare l'oggetto XPathExpression e restituisce il risultato tipizzato.

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

Parametri

expr
XPathExpression

Oggetto XPathExpression che può essere valutato.

context
XPathNodeIterator

Oggetto XPathNodeIterator che punta all'insieme di nodi selezionato su cui deve essere eseguita la valutazione.

Restituisce

Risultato dell'espressione (valore booleano, numero, stringa o set di nodi). Mappa rispettivamente agli oggetti Boolean, Double, String o XPathNodeIterator.

Eccezioni

Il tipo restituito dell'espressione XPath è un insieme di nodi.

L’espressione XPath non è valida.

Esempio

Nell'esempio XPathNodeIterator seguente viene valutato un oggetto XPathExpression e viene restituito un Double oggetto usando il Current nodo di come nodo di contesto.

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

Nell'esempio il file books.xml viene considerato come input.

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

Commenti

L'espressione viene valutata usando il Current nodo dell'oggetto XPathNodeIterator come nodo di contesto. Se context è null, il nodo in cui è XPathNavigator attualmente posizionato viene usato come nodo di contesto.

Le funzioni position() e last(), a meno che non venga usato come predicato in un passaggio della posizione, restituire sempre 0 in base alle condizioni seguenti:

Poiché le funzioni position() e last() funzionano nel nodo corrente, non è consigliabile usare la Current proprietà per allontanarsi dal set di nodi selezionato. Questo potrebbe invalidare lo stato dell'oggetto XPathNavigator.

Questo metodo non ha alcun effetto sullo stato dell'oggetto XPathNavigator.

Si applica a