XPathNavigator による Xpath 式の評価

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

Evaluate メソッド

Evaluate メソッドは XPath 式を受け取って評価し、XPath 式の結果に基づいて W3C XPath 型のブール値 (Boolean)、数字 (Double)、文字列 (String)、またはノード セット (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 関数と last 関数

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

関連項目