次の方法で共有


XPathNavigator.Evaluate メソッド (String)

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

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

パラメータ

  • xpath
    計算できる XPath 式を表す文字列。

戻り値

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

例外

例外の種類 条件
ArgumentException XPath 式にエラーが含まれています。

解説

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

nav.Evaluate("Price/text()*10");

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

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

使用例

[Visual Basic, C#, C++] 2 つの XPath 式を計算する例を次に示します。

 
Dim doc as XPathDocument = new XPathDocument("books.xml")
Dim nav as XPathNavigator = doc.CreateNavigator()

' Evaluate an expression that returns a number.
Dim expr1 as string = "sum(descendant::book/price)"
Console.WriteLine("Total price for all books: {0}", nav.Evaluate(expr1))

' Evaluate an expression that returns a node set.
Console.WriteLine("List each book price.")
Dim expr2 as string = "bookstore/book/price"
Dim ni as XPathNodeIterator = CType (nav.Evaluate(expr2), XPathNodeIterator)
while (ni.MoveNext())
  Console.WriteLine(ni.Current.ToString())
end while

[C#] 
XPathDocument doc = new XPathDocument("books.xml");
XPathNavigator nav = doc.CreateNavigator();

// Evaluate an expression that returns a number.
string expr1 = "sum(descendant::book/price)";
Console.WriteLine("Total price for all books: {0}", nav.Evaluate(expr1));

// Evaluate an expression that returns a node set.
Console.WriteLine("List each book price.");
string expr2 = "bookstore/book/price"; 
XPathNodeIterator ni = (XPathNodeIterator) nav.Evaluate(expr2);
while (ni.MoveNext()){
   Console.WriteLine(ni.Current.ToString());
}

[C++] 
XPathDocument* doc = new XPathDocument(S"books.xml");
XPathNavigator * nav = doc -> CreateNavigator();

// Evaluate an expression that returns a number.
String* expr1 = S"sum(descendant::book/price)";
Console::WriteLine(S"Total price for all books: {0}", nav -> Evaluate(expr1));

// Evaluate an expression that returns a node set.
Console::WriteLine(S"List each book price.");
String* expr2 = S"bookstore/book/price"; 
XPathNodeIterator * ni = dynamic_cast<XPathNodeIterator*>(nav -> Evaluate(expr2));
while (ni -> MoveNext()) 
{
   Console::WriteLine(ni -> Current);
}

[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 | XPathExpression | ReturnType