次の方法で共有


XPathNavigator.Evaluate メソッド

指定した式を計算し、型指定された結果を返します。

オーバーロードの一覧

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

[Visual Basic] Overloads Public Overridable Function Evaluate(String) As Object

[C#] public virtual object Evaluate(string);

[C++] public: virtual Object* Evaluate(String*);

[JScript] public function Evaluate(String) : Object;

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

[Visual Basic] Overloads Public Overridable Function Evaluate(XPathExpression) As Object

[C#] public virtual object Evaluate(XPathExpression);

[C++] public: virtual Object* Evaluate(XPathExpression*);

[JScript] public function Evaluate(XPathExpression) : Object;

提供されたコンテキストを使用して、 XPathExpression を計算し、型指定された結果 (数値、ブール値、文字列、またはノード セット) を返します。

[Visual Basic] Overloads Public Overridable Function Evaluate(XPathExpression, XPathNodeIterator) As Object

[C#] public virtual object Evaluate(XPathExpression, XPathNodeIterator);

[C++] public: virtual Object* Evaluate(XPathExpression*, XPathNodeIterator*);

[JScript] public function Evaluate(XPathExpression, XPathNodeIterator) : Object;

使用例

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

[Visual Basic, C#, C++] メモ   ここでは、Evaluate のオーバーロード形式のうちの 1 つだけについて、使用例を示します。その他の例については、各オーバーロード形式のトピックを参照してください。

 
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++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

参照

XPathNavigator クラス | XPathNavigator メンバ | System.Xml.XPath 名前空間