XPathNavigator.Evaluate メソッド

定義

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

オーバーロード

Evaluate(String)

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

Evaluate(XPathExpression)

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

Evaluate(String, IXmlNamespaceResolver)

指定された IXmlNamespaceResolver オブジェクトを使用して XPath 式の名前空間プレフィックスを解決することにより、指定された XPath 式を計算して、型指定された結果を返します。

Evaluate(XPathExpression, XPathNodeIterator)

提供されたコンテキストを使用して XPathExpression を計算し、型指定された結果を返します。

Evaluate(String)

ソース:
XPathNavigator.cs
ソース:
XPathNavigator.cs
ソース:
XPathNavigator.cs

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

public:
 virtual System::Object ^ Evaluate(System::String ^ xpath);
public virtual object Evaluate (string xpath);
abstract member Evaluate : string -> obj
override this.Evaluate : string -> obj
Public Overridable Function Evaluate (xpath As String) As Object

パラメーター

xpath
String

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

戻り値

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

例外

XPath 式の戻り値の型がノード セットです。

XPath 式が有効ではありません。

次の例では、XPath 式を評価し、 を Double返します。

XPathDocument^ document = gcnew XPathDocument("books.xml");
XPathNavigator^ navigator = document->CreateNavigator();

Double total = (double)navigator->Evaluate("sum(descendant::book/price)");
Console::WriteLine("Total price for all books: {0}", total.ToString());
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();

Double total = (double)navigator.Evaluate("sum(descendant::book/price)");
Console.WriteLine("Total price for all books: {0}", total.ToString());
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim total As Double = CType(navigator.Evaluate("sum(descendant::book/price)"), Double)
Console.WriteLine("Total price for all books: {0}", total.ToString())

この例は、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>  

注釈

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

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

注意

XPath position() 関数と last() 関数は、場所ステップで述語として使用されない限り、評価するためにノード セットへの参照を必要とします。 この場合は、 を引数として受け取る XPathNodeIterator オーバーロードを使用する必要があります。それ以外の場合は、position() と last() は 0 を返します。

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

こちらもご覧ください

適用対象

Evaluate(XPathExpression)

ソース:
XPathNavigator.cs
ソース:
XPathNavigator.cs
ソース:
XPathNavigator.cs

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

public:
 virtual System::Object ^ Evaluate(System::Xml::XPath::XPathExpression ^ expr);
public virtual object Evaluate (System.Xml.XPath.XPathExpression expr);
abstract member Evaluate : System.Xml.XPath.XPathExpression -> obj
override this.Evaluate : System.Xml.XPath.XPathExpression -> obj
Public Overridable Function Evaluate (expr As XPathExpression) As Object

パラメーター

expr
XPathExpression

評価できる XPathExpression

戻り値

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

例外

XPath 式の戻り値の型がノード セットです。

XPath 式が有効ではありません。

次の例では、 を XPathExpression 評価し、 を Double返します。

XPathDocument^ document = gcnew XPathDocument("books.xml");
XPathNavigator^ navigator = document->CreateNavigator();

XPathExpression^ query = navigator->Compile("sum(descendant::book/price)");

Double total = (double)navigator->Evaluate(query);
Console::WriteLine("Total price for all books: {0}", total.ToString());
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();

XPathExpression query = navigator.Compile("sum(descendant::book/price)");

Double total = (double)navigator.Evaluate(query);
Console.WriteLine("Total price for all books: {0}", total.ToString());
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim query As XPathExpression = navigator.Compile("sum(descendant::book/price)")

Dim total As Double = CType(navigator.Evaluate(query), Double)
Console.WriteLine("Total price for all books: {0}", total.ToString())

この例は、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>  

注釈

次の C# コードは、ノードを数値に変換し、値に Price/text() 10 を掛けた後、数値を返します。

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

Note

XPath position() 関数と last() 関数は、場所ステップで述語として使用されない限り、評価するためにノード セットへの参照を必要とします。 この場合は、 を引数として受け取る XPathNodeIterator オーバーロードを使用する必要があります。それ以外の場合は、position() と last() は 0 を返します。

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

こちらもご覧ください

適用対象

Evaluate(String, IXmlNamespaceResolver)

ソース:
XPathNavigator.cs
ソース:
XPathNavigator.cs
ソース:
XPathNavigator.cs

指定された IXmlNamespaceResolver オブジェクトを使用して XPath 式の名前空間プレフィックスを解決することにより、指定された XPath 式を計算して、型指定された結果を返します。

public:
 virtual System::Object ^ Evaluate(System::String ^ xpath, System::Xml::IXmlNamespaceResolver ^ resolver);
public virtual object Evaluate (string xpath, System.Xml.IXmlNamespaceResolver? resolver);
public virtual object Evaluate (string xpath, System.Xml.IXmlNamespaceResolver resolver);
abstract member Evaluate : string * System.Xml.IXmlNamespaceResolver -> obj
override this.Evaluate : string * System.Xml.IXmlNamespaceResolver -> obj
Public Overridable Function Evaluate (xpath As String, resolver As IXmlNamespaceResolver) As Object

パラメーター

xpath
String

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

resolver
IXmlNamespaceResolver

XPath 式の名前空間プレフィックスの解決に使用する IXmlNamespaceResolver オブジェクト。

戻り値

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

例外

XPath 式の戻り値の型がノード セットです。

XPath 式が有効ではありません。

次の例では、XPath 式を評価し、XPath 式の名前空間プレフィックスをXmlNamespaceManager解決するために指定された オブジェクトを使用して を返Doubleします。

XPathDocument^ document = gcnew XPathDocument("contosoBooks.xml");
XPathNavigator^ navigator = document->CreateNavigator();

XmlNamespaceManager^ manager = gcnew XmlNamespaceManager(navigator->NameTable);
manager->AddNamespace("bk", "http://www.contoso.com/books");

Double total = (double)navigator->Evaluate("sum(descendant::bk:book/bk:price)", manager);
Console::WriteLine("Total price for all books: {0}", total.ToString());
XPathDocument document = new XPathDocument("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();

XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);
manager.AddNamespace("bk", "http://www.contoso.com/books");

Double total = (double)navigator.Evaluate("sum(descendant::bk:book/bk:price)", manager);
Console.WriteLine("Total price for all books: {0}", total.ToString());
Dim document As XPathDocument = New XPathDocument("contosoBooks.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim manager As XmlNamespaceManager = New XmlNamespaceManager(navigator.NameTable)
manager.AddNamespace("bk", "http://www.contoso.com/books")

Dim total As Double = CType(navigator.Evaluate("sum(descendant::bk:book/bk:price)", manager), Double)
Console.WriteLine("Total price for all books: {0}", total.ToString())

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

<?xml version="1.0" encoding="utf-8" ?>  
<bookstore xmlns="http://www.contoso.com/books">  
    <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>  

注釈

次の C# コードは、ノードを数値に変換し、値に Price/text() 10 を掛けた後、数値を返します。

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

Note

XPath position() 関数と last() 関数は、場所ステップで述語として使用されない限り、評価するためにノード セットへの参照を必要とします。 この場合は、 を引数として受け取る XPathNodeIterator オーバーロードを使用する必要があります。それ以外の場合は、position() と last() は 0 を返します。

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

適用対象

Evaluate(XPathExpression, XPathNodeIterator)

ソース:
XPathNavigator.cs
ソース:
XPathNavigator.cs
ソース:
XPathNavigator.cs

提供されたコンテキストを使用して XPathExpression を計算し、型指定された結果を返します。

public:
 virtual System::Object ^ Evaluate(System::Xml::XPath::XPathExpression ^ expr, System::Xml::XPath::XPathNodeIterator ^ context);
public virtual object Evaluate (System.Xml.XPath.XPathExpression expr, System.Xml.XPath.XPathNodeIterator? context);
public virtual object Evaluate (System.Xml.XPath.XPathExpression expr, System.Xml.XPath.XPathNodeIterator context);
abstract member Evaluate : System.Xml.XPath.XPathExpression * System.Xml.XPath.XPathNodeIterator -> obj
override this.Evaluate : System.Xml.XPath.XPathExpression * System.Xml.XPath.XPathNodeIterator -> obj
Public Overridable Function Evaluate (expr As XPathExpression, context As XPathNodeIterator) As Object

パラメーター

expr
XPathExpression

評価できる XPathExpression

context
XPathNodeIterator

計算を行う対象の選択したノード セットを指す XPathNodeIterator

戻り値

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

例外

XPath 式の戻り値の型がノード セットです。

XPath 式が有効ではありません。

次の例では、 を XPathExpression 評価し、 の Double ノードを Current コンテキスト ノード XPathNodeIterator として使用して を返します。

XPathDocument^ document = gcnew XPathDocument("books.xml");
XPathNavigator^ navigator = document->CreateNavigator();

XPathNodeIterator^ nodes = navigator->Select("//book");
XPathExpression^ query = nodes->Current->Compile("sum(descendant::price)");

Double total = (double)navigator->Evaluate(query, nodes);
Console::WriteLine("Total price for all books: {0}", total.ToString());
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();

XPathNodeIterator nodes = navigator.Select("//book");
XPathExpression query = nodes.Current.Compile("sum(descendant::price)");

Double total = (double)navigator.Evaluate(query, nodes);
Console.WriteLine("Total price for all books: {0}", total.ToString());
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim nodes As XPathNodeIterator = navigator.Select("//book")
Dim query As XPathExpression = nodes.Current.Compile("sum(descendant::price)")

Dim total As Double = CType(navigator.Evaluate(query, nodes), Double)
Console.WriteLine("Total price for all books: {0}", total.ToString())

この例は、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>  

注釈

式は、 のノードを Current コンテキスト ノード XPathNodeIterator として使用して評価されます。 が nullの場合context、 が現在配置されているノードXPathNavigatorがコンテキスト ノードとして使用されます。

position() 関数と last() 関数は、場所ステップで述語として使用されない限り、常に次の条件で 0 を返します。

position() 関数と last() 関数は現在のノードで動作するため、 プロパティを Current 使用して、選択したノード セットから離れる必要があります。 これにより、 の状態 XPathNavigatorが無効になる可能性があります。

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

適用対象