次の方法で共有


XPathNavigator を使用して XPath 式を評価する

XPathNavigator クラスは、XPath 式を評価するEvaluate メソッドを提供します。 Evaluate メソッドは、XPath 式を受け取り、それを評価し、XPath 式の結果に基づいて、ブール型、数値型、文字列型、またはノード セットの W3C XPath 型を返します。

Evaluate メソッド

Evaluate メソッドは、XPath 式を受け取り、それを評価し、ブール値 (Boolean)、Number (Double)、String (String)、または Node Set (XPathNodeIterator) の型指定された結果を返します。 たとえば、 Evaluate メソッドは数学的メソッドで使用できます。 次のコード例では、 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);  

この例では、books.xml ファイルを入力として受け取ります。

<?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 関数と最後の関数

Evaluate メソッドはオーバーロードされています。 Evaluateメソッドの 1 つは、パラメーターとしてXPathNodeIterator オブジェクトを受け取ります。 この特定のEvaluate メソッドは、XPathExpression オブジェクトのみをパラメーターとして受け取るEvaluate メソッドと同じですが、ノード セット引数で現在のコンテキストを指定して評価を実行できる点が異なります。 このコンテキストは、現在のコンテキスト ノードに対して相対的であるため、XPath position() および last() 関数に必要です。 場所ステップで述語として使用されない限り、 position() 関数と last() 関数は、それ以外の場合に評価するためにノード セットへの参照を必要とし、 position 関数と last 関数は 0を返します。

こちらも参照ください