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