Поделиться через


XPathNavigator.Evaluate Метод

Определение

Вычисляет указанное выражение XPath и возвращает типизированный результат.

Перегрузки

Имя Описание
Evaluate(String)

Вычисляет указанное выражение XPath и возвращает типизированный результат.

Evaluate(XPathExpression)

Вычисляет XPathExpression и возвращает типизированный результат.

Evaluate(String, IXmlNamespaceResolver)

Вычисляет указанное выражение XPath и возвращает типизированный результат, используя IXmlNamespaceResolver объект, указанный для разрешения префиксов пространства имен в выражении XPath.

Evaluate(XPathExpression, XPathNodeIterator)

Использует предоставленный контекст для вычисления XPathExpressionи возвращает типизированный результат.

Evaluate(String)

Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
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, StringDoubleили XPathNodeIterator объектами соответственно.

Исключения

Возвращаемый тип выражения XPath — это набор узлов.

Недопустимое выражение XPath.

Примеры

В следующем примере вычисляется выражение XPath и возвращается Double.

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
Исходный код:
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, StringDoubleили XPathNodeIterator объектами соответственно.

Исключения

Возвращаемый тип выражения XPath — это набор узлов.

Недопустимое выражение XPath.

Примеры

В следующем примере вычисляется XPathExpression и возвращается Double.

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);

Замечание

Функции XPath position() и last(), если не используется в качестве предиката в шаге расположения, требуется ссылка на набор узлов для оценки. В этом случае необходимо использовать перегрузку, которая принимает в XPathNodeIterator качестве аргумента; в противном случае значение position() и last() возвращает 0.

Этот метод не влияет на состояние XPathNavigatorобъекта .

См. также раздел

Применяется к

Evaluate(String, IXmlNamespaceResolver)

Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs

Вычисляет указанное выражение XPath и возвращает типизированный результат, используя IXmlNamespaceResolver объект, указанный для разрешения префиксов пространства имен в выражении 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

Объект IXmlNamespaceResolver , используемый для разрешения префиксов пространства имен в выражении XPath.

Возвращаемое значение

Результат выражения (логическое значение, число, строка или набор узлов). Это сопоставляется с Boolean, StringDoubleили XPathNodeIterator объектами соответственно.

Исключения

Возвращаемый тип выражения XPath — это набор узлов.

Недопустимое выражение XPath.

Примеры

В следующем примере вычисляется выражение XPath и возвращается DoubleXmlNamespaceManager объект, указанный для разрешения префиксов пространства имен в выражении XPath.

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);

Замечание

Функции XPath position() и last(), если не используется в качестве предиката в шаге расположения, требуется ссылка на набор узлов для оценки. В этом случае необходимо использовать перегрузку, которая принимает в XPathNodeIterator качестве аргумента; в противном случае значение position() и last() возвращает 0.

Этот метод не влияет на состояние XPathNavigatorобъекта .

Применяется к

Evaluate(XPathExpression, XPathNodeIterator)

Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
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, StringDoubleили XPathNodeIterator объектами соответственно.

Исключения

Возвращаемый тип выражения XPath — это набор узлов.

Недопустимое выражение XPath.

Примеры

В следующем примере вычисляется и возвращается Double узел с помощью Current узла контекстаXPathNodeIterator.XPathExpression

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 контекста. Если context это nullтак, узел, на котором XPathNavigator находится в данный момент, используется в качестве узла контекста.

Функции position() и last() без использования в качестве предиката в шаге расположения всегда возвращают значение 0 в следующих условиях:

Так как функции position() и last() работают на текущем узле, свойство не следует использовать Current для перехода от выбранного набора узлов. Это может привести к недопустимой состоянию XPathNavigatorобъекта .

Этот метод не влияет на состояние XPathNavigatorобъекта .

Применяется к