Condividi tramite


Valutazione di espressioni XPath con XPathNavigator

La classe XPathNavigator fornisce il metodo Evaluate per valutare un'espressione XPath. Il metodo Evaluate rileva un'espressione XPath, la valuta e restituisce un W3C XPath di tipo booleano, numero, stringa o set di nodi, in base al risultato dell'espressione XPath.

Metodo Evaluate

Il metodo Evaluate rileva un'espressione XPath, la valuta e restituisce un risultato di tipo booleano(Boolean), numero (Double), stringa (String) o set di nodi (XPathNodeIterator). È possibile ad esempio utilizzare il metodo Evaluate in un metodo matematico. Nell'esempio di codice seguente viene calcolato il prezzo totale di tutti i libri nel file 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);

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>

Funzioni position e last

Il metodo Evaluate è un metodo di overload. Uno dei metodi Evaluate accetta come parametro un oggetto XPathNodeIterator. Questo specifico metodo Evaluate è identico al metodo Evaluate che accetta solo un oggetto XPathExpression come parametro, ad eccezione del fatto che consente a un argomento set di nodi di specificare il contesto corrente in base al quale eseguire la valutazione. Questo contesto è necessario per le funzioni position() e last() di XPath in quanto sono relative al nodo di contesto corrente. A meno che non vengano utilizzate come predicato in una fase di posizione, per la valutazione delle funzioni position() e last() è necessario specificare un riferimento a un set di nodi, altrimenti le funzioni position e last restituiscono 0.

Vedere anche

Riferimenti

XmlDocument

XPathDocument

XPathNavigator

Concetti

Elaborazione di dati XML con il modello di dati XPath

Selezione di dati XML con XPathNavigator

Corrispondenza di nodi utilizzando XPathNavigator

Tipi di nodo riconosciuti con le query XPath

Query e spazi dei nomi XPath

Espressioni XPath compilate