XPathNavigator.Evaluate メソッド

定義

指定された XPath 式を評価し、型指定された結果を返します。Evaluates the specified XPath expression and returns the typed result.

オーバーロード

Evaluate(String)

指定された XPath 式を計算し、型指定された結果を返します。Evaluates the specified XPath expression and returns the typed result.

Evaluate(XPathExpression)

XPathExpression を計算し、型指定された結果を返します。Evaluates the XPathExpression and returns the typed result.

Evaluate(String, IXmlNamespaceResolver)

指定された IXmlNamespaceResolver オブジェクトを使用して XPath 式の名前空間プレフィックスを解決することにより、指定された XPath 式を計算して、型指定された結果を返します。Evaluates the specified XPath expression and returns the typed result, using the IXmlNamespaceResolver object specified to resolve namespace prefixes in the XPath expression.

Evaluate(XPathExpression, XPathNodeIterator)

提供されたコンテキストを使用して XPathExpression を計算し、型指定された結果を返します。Uses the supplied context to evaluate the XPathExpression, and returns the typed result.

Evaluate(String)

指定された XPath 式を計算し、型指定された結果を返します。Evaluates the specified XPath expression and returns the typed result.

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 式を表す文字列。A string representing an XPath expression that can be evaluated.

戻り値

Object

式の結果 (ブール値、数値、文字列、またはノード セット)。The result of the expression (Boolean, number, string, or node set). Boolean オブジェクト、Double オブジェクト、String オブジェクト、または XPathNodeIterator オブジェクトにそれぞれ割り当てられます。This maps to Boolean, Double, String, or XPathNodeIterator objects respectively.

例外

XPath 式の戻り値の型がノード セットです。The return type of the XPath expression is a node set.

XPath 式が有効ではありません。The XPath expression is not valid.

次の例では、XPath 式を評価し、を返し Double ます。The following example evaluates an XPath expression and returns a 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 ファイルを入力として使用します。The example takes the books.xml file as an input.

<?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で乗算し、結果の値を返します。The following C# code converts the Price/text() node to a number, multiplies it by 10, and returns the resulting value.

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

注意

ロケーションステップで述語として使用されていない場合、XPath の position () 関数と last () 関数は、評価のためにノードセットへの参照を必要とします。The XPath position() and last() functions, unless used as a predicate in a location step, require a reference to a node set in order to be evaluated. この場合は、を引数として受け取るオーバーロードを使用する必要があり XPathNodeIterator ます。それ以外の場合、position () および last () は0を返します。In this case, you must use the overload which takes an XPathNodeIterator as an argument; otherwise, position() and last() return 0.

このメソッドは、の状態には影響しません XPathNavigatorThis method has no effect on the state of the XPathNavigator.

こちらもご覧ください

適用対象

Evaluate(XPathExpression)

XPathExpression を計算し、型指定された結果を返します。Evaluates the XPathExpression and returns the typed result.

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

評価できる XPathExpressionAn XPathExpression that can be evaluated.

戻り値

Object

式の結果 (ブール値、数値、文字列、またはノード セット)。The result of the expression (Boolean, number, string, or node set). Boolean オブジェクト、Double オブジェクト、String オブジェクト、または XPathNodeIterator オブジェクトにそれぞれ割り当てられます。This maps to Boolean, Double, String, or XPathNodeIterator objects respectively.

例外

XPath 式の戻り値の型がノード セットです。The return type of the XPath expression is a node set.

XPath 式が有効ではありません。The XPath expression is not valid.

次の例では、を評価し、を XPathExpression 返し Double ます。The following example evaluates an XPathExpression and returns a 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 ファイルを入力として使用します。The example takes the books.xml file as an input.

<?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# コードは、ノードを数値に変換し、値を10で乗算した後の数値を返し Price/text() ます。The following C# code returns a number after converting the Price/text() node to a number and multiplying the value by 10.

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

注意

ロケーションステップで述語として使用されていない場合、XPath の position () 関数と last () 関数は、評価のためにノードセットへの参照を必要とします。The XPath position() and last() functions, unless used as a predicate in a location step, require a reference to a node set in order to be evaluated. この場合は、を引数として受け取るオーバーロードを使用する必要があり XPathNodeIterator ます。それ以外の場合、position () および last () は0を返します。In this case, you must use the overload which takes an XPathNodeIterator as an argument; otherwise, position() and last() return 0.

このメソッドは、の状態には影響しません XPathNavigatorThis method has no effect on the state of the XPathNavigator.

こちらもご覧ください

適用対象

Evaluate(String, IXmlNamespaceResolver)

指定された IXmlNamespaceResolver オブジェクトを使用して XPath 式の名前空間プレフィックスを解決することにより、指定された XPath 式を計算して、型指定された結果を返します。Evaluates the specified XPath expression and returns the typed result, using the IXmlNamespaceResolver object specified to resolve namespace prefixes in the XPath expression.

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 式を表す文字列。A string representing an XPath expression that can be evaluated.

resolver
IXmlNamespaceResolver

XPath 式の名前空間プレフィックスの解決に使用する IXmlNamespaceResolver オブジェクト。The IXmlNamespaceResolver object used to resolve namespace prefixes in the XPath expression.

戻り値

Object

式の結果 (ブール値、数値、文字列、またはノード セット)。The result of the expression (Boolean, number, string, or node set). Boolean オブジェクト、Double オブジェクト、String オブジェクト、または XPathNodeIterator オブジェクトにそれぞれ割り当てられます。This maps to Boolean, Double, String, or XPathNodeIterator objects respectively.

例外

XPath 式の戻り値の型がノード セットです。The return type of the XPath expression is a node set.

XPath 式が有効ではありません。The XPath expression is not valid.

次の例では、XPath 式を評価し、 Double XmlNamespaceManager xpath 式の名前空間プレフィックスを解決するために指定されたオブジェクトを使用してを返します。The following example evaluates an XPath expression and returns a Double using the XmlNamespaceManager object specified to resolve namespace prefixes in the XPath expression.

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 ファイルを入力として使用します。The example takes the contosoBooks.xml file as an input.

<?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# コードは、ノードを数値に変換し、値を10で乗算した後の数値を返し Price/text() ます。The following C# code returns a number after converting the Price/text() node to a number and multiplying the value by 10.

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

注意

ロケーションステップで述語として使用されていない場合、XPath の position () 関数と last () 関数は、評価のためにノードセットへの参照を必要とします。The XPath position() and last() functions, unless used as a predicate in a location step, require a reference to a node set in order to be evaluated. この場合は、を引数として受け取るオーバーロードを使用する必要があり XPathNodeIterator ます。それ以外の場合、position () および last () は0を返します。In this case, you must use the overload which takes an XPathNodeIterator as an argument; otherwise, position() and last() return 0.

このメソッドは、の状態には影響しません XPathNavigatorThis method has no effect on the state of the XPathNavigator.

適用対象

Evaluate(XPathExpression, XPathNodeIterator)

提供されたコンテキストを使用して XPathExpression を計算し、型指定された結果を返します。Uses the supplied context to evaluate the XPathExpression, and returns the typed result.

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

評価できる XPathExpressionAn XPathExpression that can be evaluated.

context
XPathNodeIterator

計算を行う対象の選択したノード セットを指す XPathNodeIteratorAn XPathNodeIterator that points to the selected node set that the evaluation is to be performed on.

戻り値

Object

式の結果 (ブール値、数値、文字列、またはノード セット)。The result of the expression (Boolean, number, string, or node set). Boolean オブジェクト、Double オブジェクト、String オブジェクト、または XPathNodeIterator オブジェクトにそれぞれ割り当てられます。This maps to Boolean, Double, String, or XPathNodeIterator objects respectively.

例外

XPath 式の戻り値の型がノード セットです。The return type of the XPath expression is a node set.

XPath 式が有効ではありません。The XPath expression is not valid.

次の例では、を評価 XPathExpression し、 Double Current のノードをコンテキストノードとして使用してを返し XPathNodeIterator ます。The following example evaluates an XPathExpression and returns a Double using the Current node of the XPathNodeIterator as the context node.

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 ファイルを入力として使用します。The example takes the books.xml file as an input.

<?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 ます。The expression is evaluated using the Current node of the XPathNodeIterator as the context node. がの場合は、が context null 現在配置されているノード XPathNavigator がコンテキストノードとして使用されます。If context is null, the node on which the XPathNavigator is currently positioned is used as the context node.

Position () 関数と last () 関数は、ロケーションステップで述語として使用されていない限り、常に次の条件下で0を返します。The position() and last() functions, unless used as a predicate in a location step, always return 0 under the following conditions:

Position () 関数と last () 関数は現在のノードで動作するため、選択した Current ノードセットから移動するためにプロパティを使用しないでください。Because the position() and last() functions work on the current node, you should not use the Current property to move away from the selected node set. これにより、の状態が無効になる可能性が XPathNavigator あります。This could invalidate the state of the XPathNavigator.

このメソッドは、の状態には影響しません XPathNavigatorThis method has no effect on the state of the XPathNavigator.

適用対象