XPathNavigator.Evaluate Método

Definição

Avalia a expressão XPath especificada e retorna o resultado tipado.

Sobrecargas

Evaluate(String)

Avalia a expressão XPath especificada e retorna o resultado tipado.

Evaluate(XPathExpression)

Avalia XPathExpression e retorna o resultado de tipo.

Evaluate(String, IXmlNamespaceResolver)

Avalia a expressão XPath especificada e retorna o resultado tipado, usando o objeto IXmlNamespaceResolver especificado para resolver prefixos de namespace na expressão XPath.

Evaluate(XPathExpression, XPathNodeIterator)

Usa o contexto fornecido para avaliar o XPathExpression e retorna o resultado com tipo.

Evaluate(String)

Origem:
XPathNavigator.cs
Origem:
XPathNavigator.cs
Origem:
XPathNavigator.cs

Avalia a expressão XPath especificada e retorna o resultado tipado.

C#
public virtual object Evaluate (string xpath);

Parâmetros

xpath
String

Uma cadeia de caracteres que representa uma expressão XPath que pode ser avaliada.

Retornos

O resultado da expressão (booliano, número, cadeia de caracteres ou conjunto de nós). Ele é mapeado para os objetos Boolean, Double, String ou XPathNodeIterator, respectivamente.

Exceções

O tipo de retorno da expressão XPath é um conjunto de nós.

A expressão XPath não é válida.

Exemplos

O exemplo a seguir avalia uma expressão XPath e retorna um Double.

C#
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());

O exemplo usa o arquivo books.xml como entrada.

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>  

Comentários

O código C# a seguir converte o Price/text() nó em um número, multiplica-o por 10 e retorna o valor resultante.

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

Observação

As funções XPath position() e last(), a menos que usadas como um predicado em uma etapa de localização, exigem uma referência a um conjunto de nós para serem avaliadas. Nesse caso, você deve usar a sobrecarga que usa um XPathNodeIterator como argumento; caso contrário, position() e last() retornam 0.

Esse método não tem efeito sobre o estado do XPathNavigator.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Evaluate(XPathExpression)

Origem:
XPathNavigator.cs
Origem:
XPathNavigator.cs
Origem:
XPathNavigator.cs

Avalia XPathExpression e retorna o resultado de tipo.

C#
public virtual object Evaluate (System.Xml.XPath.XPathExpression expr);

Parâmetros

expr
XPathExpression

Um XPathExpression que pode ser avaliado.

Retornos

O resultado da expressão (booliano, número, cadeia de caracteres ou conjunto de nós). Ele é mapeado para os objetos Boolean, Double, String ou XPathNodeIterator, respectivamente.

Exceções

O tipo de retorno da expressão XPath é um conjunto de nós.

A expressão XPath não é válida.

Exemplos

O exemplo a seguir avalia um XPathExpression e retorna um Double.

C#
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());

O exemplo usa o arquivo books.xml como entrada.

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>  

Comentários

O código C# a seguir retorna um número depois de converter o Price/text() nó em um número e multiplicar o valor por 10.

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

Observação

As funções XPath position() e last(), a menos que usadas como um predicado em uma etapa de localização, exigem uma referência a um conjunto de nós para serem avaliadas. Nesse caso, você deve usar a sobrecarga que usa um XPathNodeIterator como argumento; caso contrário, position() e last() retornam 0.

Esse método não tem efeito sobre o estado do XPathNavigator.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Evaluate(String, IXmlNamespaceResolver)

Origem:
XPathNavigator.cs
Origem:
XPathNavigator.cs
Origem:
XPathNavigator.cs

Avalia a expressão XPath especificada e retorna o resultado tipado, usando o objeto IXmlNamespaceResolver especificado para resolver prefixos de namespace na expressão XPath.

C#
public virtual object Evaluate (string xpath, System.Xml.IXmlNamespaceResolver? resolver);
C#
public virtual object Evaluate (string xpath, System.Xml.IXmlNamespaceResolver resolver);

Parâmetros

xpath
String

Uma cadeia de caracteres que representa uma expressão XPath que pode ser avaliada.

resolver
IXmlNamespaceResolver

O objeto IXmlNamespaceResolver usado para resolver os prefixos de namespace na expressão XPath.

Retornos

O resultado da expressão (booliano, número, cadeia de caracteres ou conjunto de nós). Ele é mapeado para os objetos Boolean, Double, String ou XPathNodeIterator, respectivamente.

Exceções

O tipo de retorno da expressão XPath é um conjunto de nós.

A expressão XPath não é válida.

Exemplos

O exemplo a seguir avalia uma expressão XPath e retorna um Double usando o XmlNamespaceManager objeto especificado para resolver prefixos de namespace na expressão XPath.

C#
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());

O exemplo usa o arquivo contosoBooks.xml como entrada.

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>  

Comentários

O código C# a seguir retorna um número depois de converter o Price/text() nó em um número e multiplicar o valor por 10.

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

Observação

As funções XPath position() e last(), a menos que usadas como um predicado em uma etapa de localização, exigem uma referência a um conjunto de nós para serem avaliadas. Nesse caso, você deve usar a sobrecarga que usa um XPathNodeIterator como argumento; caso contrário, position() e last() retornam 0.

Esse método não tem efeito sobre o estado do XPathNavigator.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Evaluate(XPathExpression, XPathNodeIterator)

Origem:
XPathNavigator.cs
Origem:
XPathNavigator.cs
Origem:
XPathNavigator.cs

Usa o contexto fornecido para avaliar o XPathExpression e retorna o resultado com tipo.

C#
public virtual object Evaluate (System.Xml.XPath.XPathExpression expr, System.Xml.XPath.XPathNodeIterator? context);
C#
public virtual object Evaluate (System.Xml.XPath.XPathExpression expr, System.Xml.XPath.XPathNodeIterator context);

Parâmetros

expr
XPathExpression

Um XPathExpression que pode ser avaliado.

context
XPathNodeIterator

Um XPathNodeIterator que aponta para o conjunto de nós selecionado em que a avaliação deve ser executada.

Retornos

O resultado da expressão (booliano, número, cadeia de caracteres ou conjunto de nós). Ele é mapeado para os objetos Boolean, Double, String ou XPathNodeIterator, respectivamente.

Exceções

O tipo de retorno da expressão XPath é um conjunto de nós.

A expressão XPath não é válida.

Exemplos

O exemplo a seguir avalia um XPathExpression e retorna um Double usando o Current nó do XPathNodeIterator como o nó de contexto.

C#
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());

O exemplo usa o arquivo books.xml como entrada.

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>  

Comentários

A expressão é avaliada usando o Current nó do XPathNodeIterator como o nó de contexto. Se context for null, o nó no qual o XPathNavigator está posicionado no momento será usado como o nó de contexto.

As funções position() e last(), a menos que usadas como predicado em uma etapa de localização, sempre retornam 0 sob as seguintes condições:

Como as funções position() e last() funcionam no nó atual, você não deve usar a Current propriedade para se afastar do conjunto de nós selecionado. Isso pode invalidar o estado do XPathNavigator.

Esse método não tem efeito sobre o estado do XPathNavigator.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1