次の方法で共有


XPathNavigator.Evaluate メソッド (XPathExpression)

XPathExpression を計算し、型指定された結果 (数値、ブール値、文字列、またはノード セット) を返します。 XPathNodeIterator を使用して、ノード セットを反復処理します。

Overloads Public Overridable Function Evaluate( _
   ByVal expr As XPathExpression _) As Object
[C#]
public virtual object Evaluate(XPathExpressionexpr);
[C++]
public: virtual Object* Evaluate(XPathExpression* expr);
[JScript]
public function Evaluate(
   expr : XPathExpression) : Object;

パラメータ

  • expr
    計算できる XPathExpression。

戻り値

式の型指定された結果 (数値、ブール値、文字列、またはノード セット)。 Double オブジェクト、 Boolean オブジェクト、 String オブジェクト、または XPathNodeIterator オブジェクトにそれぞれ割り当てられます。

例外

例外の種類 条件
ArgumentException XPathExpression が、エラーを格納します。

解説

Price/text() ノードを数値に変換し、この値に 10 を乗算した後、数値を返す C# コードの例を次に示します。

XPathExpression expr = nav.Compile("Price/text()*10");
      nav.Evaluate(expr);

メモ   XPath position() 関数と last() 関数は、位置ステップで述語として使用しない場合は、計算するためにノード セットの参照を必要とします。この場合は、 XPathNodeIterator を引数としてとるオーバーロードを使用する必要があります。それ以外の場合、position() と last() は 0 を返します。

このメソッドは、 XPathNavigator 状態には影響を与えません。

使用例

[Visual Basic, C#, C++] 顧客の注文合計額を計算する例を次に示します。

 
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.XPath

public class Sample

  public shared sub Main()

    Dim doc as XmlDocument = new XmlDocument()
    doc.Load("order.xml")
    Dim nav as XPathNavigator = doc.CreateNavigator()

    ' Calculate the total of the order.
    Dim expr as XPathExpression = nav.Compile("sum(//price/text())")
    Dim total as double = CType(nav.Evaluate(expr), double)

    ' If the total is more than 30 dollars, give the
    ' user a 5 dollar discount.
    if (total > 30.00)
      Dim disc as double = 5.00
      total = total - disc
      Console.WriteLine("Total price: ${0}", total)
    else
      Console.WriteLine("Total price: ${0}", total)
    end if

  end sub
end class

[C#] 
using System;
using System.IO;
using System.Xml;
using System.Xml.XPath;

public class Sample
{
  public static void Main()
  {

    XmlDocument doc = new XmlDocument();
    doc.Load("order.xml");
    XPathNavigator nav = doc.CreateNavigator();

    // Calculate the total of the order.
    XPathExpression expr = nav.Compile("sum(//price/text())");
    double total = (double) nav.Evaluate(expr);

    // If the total is more than 30 dollars, give the
    // user a 5 dollar discount.
    if (total > 30.00){
      double disc = 5.00;
      total = total - disc;
      Console.WriteLine("Total price: ${0}", total);
    }
    else
      Console.WriteLine("Total price: ${0}", total);
    
  }
}

[C++] 
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::XPath;

int main()
{
   XmlDocument* doc = new XmlDocument();
   doc -> Load(S"order.xml");
   XPathNavigator * nav = doc -> CreateNavigator();

   // Calculate the total of the order.
   XPathExpression * expr = nav -> Compile(S"sum(//price/text())");
   double total = *__try_cast<__box double*>(nav->Evaluate(expr));

   // If the total is more than 30 dollars, give the
   // user a 5 dollar discount.
   if (total > 30.00) 
   {
      double disc = 5.00;
      total = total - disc;
      Console::WriteLine(S"Total price: $ {0}", __box(total));
   } 
   else
      Console::WriteLine(S"Total price: $ {0}", __box(total));
}

この例では、入力として、 order.xml というファイルを使用しています。

<!--Represents a customer order-->
<order>
  <book ISBN='10-861003-324'>
    <title>The Handmaid's Tale</title>
    <price>19.95</price>
  </book>
  <cd ISBN='2-3631-4'>
    <title>Americana</title>
    <price>16.95</price>
  </cd>
</order>

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

XPathNavigator クラス | XPathNavigator メンバ | System.Xml.XPath 名前空間 | XPathNavigator.Evaluate オーバーロードの一覧 | Compile | ReturnType