Condividi tramite


Valutare le espressioni XPath con XPathNavigator

La XPathNavigator classe fornisce il Evaluate metodo per valutare un'espressione XPath. Il Evaluate metodo accetta un'espressione XPath, la valuta e restituisce un tipo XPath W3C di tipo Boolean, Number, String o Node Set in base al risultato dell'espressione XPath.

Metodo Evaluate

Il Evaluate metodo accetta un'espressione XPath, la valuta e restituisce un risultato tipizzato booleano (Boolean), Number (), String (DoubleString) o Node Set (XPathNodeIterator). Ad esempio, il Evaluate metodo può essere usato in un metodo matematico. Il codice di esempio seguente calcola il prezzo totale di tutti i libri nel books.xml file.

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'esempio accetta il file books.xml 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>

posizione e funzioni

Il Evaluate metodo è sottoposto a overload. Uno dei Evaluate metodi accetta un XPathNodeIterator oggetto come parametro. Questo particolare Evaluate metodo è identico al Evaluate metodo che accetta solo un XPathExpression oggetto come parametro, ad eccezione del fatto che consente a un argomento set di nodi di specificare il contesto corrente per eseguire la valutazione. Questo contesto è necessario per le funzioni XPath position() e last() poiché sono relative al nodo di contesto corrente. A meno che non venga usato come predicato in un passaggio di posizione, le position() funzioni e last() richiedono un riferimento a un set di nodi per essere valutate in caso contrario, le position funzioni e last restituiscono 0.

Vedere anche