Compartilhar via


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.

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

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.

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

O exemplo usa o arquivo books.xml como entrada.

<?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.

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

Evaluate(XPathExpression)

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

Avalia XPathExpression e retorna o resultado de tipo.

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

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.

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

O exemplo usa o arquivo books.xml como entrada.

<?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.

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

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.

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

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.

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

O exemplo usa o arquivo contosoBooks.xml como entrada.

<?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.

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

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.

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

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.

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

O exemplo usa o arquivo books.xml como entrada.

<?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