Freigeben über


Auswerten von XPath-Ausdrücken mit XPathNavigator

Die XPathNavigator-Klasse stellt die Evaluate-Methode bereit, mit der ein XPath-Ausdruck ausgewertet werden kann. Die Evaluate-Methode verwendet einen XPath-Ausdruck, wertet ihn aus und gibt je nach Ergebnis des XPath-Ausdrucks einen der W3C-XPath-Typen Boolean, Number, String oder Node Set zurück.

Die Evaluate-Methode

Die Evaluate-Methode akzeptiert einen XPath-Ausdruck, wertet ihn aus und gibt ein typisiertes Ergebnis vom Typ Boolean (Boolean), Number (Double), String (String) oder Node Set (XPathNodeIterator) zurück. Die Evaluate-Methode kann z. B. in einer mathematischen Methode verwendet werden. Im folgenden Beispielcode wird der Gesamtpreis aller Bücher in der Datei books.xml berechnet.

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

In diesem Beispiel wird die Datei books.xml als Eingabe verwendet.

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

position-Funktion und last-Funktion

Die Evaluate-Methode ist überladen. Eine der Evaluate-Methoden akzeptiert ein XPathNodeIterator-Objekt als Parameter. Diese bestimmte Evaluate-Methode ist identisch mit der Evaluate-Methode, die nur ein XPathExpression-Objekt als Parameter verwendet, außer dass sie ein node-set-Argument zulässt, um den aktuellen Kontext anzugeben, in dem die Auswertung ausgeführt werden soll. Dieser Kontext ist für die XPath-Funktionen position() und last() erforderlich, da diese relativ zum aktuellen Kontextknoten sind. Für die position()-Funktion und die last()-Funktion ist für die Auswertung ein Verweis auf eine Knotengruppe erforderlich, sofern sie nicht als Prädikat in einem Location-Step verwendet werden, da die position-Funktion und die last-Funktion andernfalls 0 zurückgeben.

Siehe auch