Compartilhar via


Avaliar expressões XPath usando XPathNavigator

A XPathNavigator classe fornece o Evaluate método para avaliar uma expressão XPath. O Evaluate método usa uma expressão XPath, avalia-a e retorna um tipo XPath W3C de Boolean, Number, String ou Node Set com base no resultado da expressão XPath.

O método de avaliação

O Evaluate método usa uma expressão XPath, avalia-a e retorna um resultado tipado de Boolean (Boolean), Number (Double), String (String) ou Node Set (XPathNodeIterator). Por exemplo, o Evaluate método pode ser usado em um método matemático. O código de exemplo a seguir calcula o preço total de todos os livros no books.xml arquivo.

Dim document As XPathDocument = New XPathDocument("books.xml")  
Dim navigator As XPathNavigator = document.CreateNavigator()  
  
Dim query As XPathExpression = navigator.Compile("sum(//price/text())")  
Dim total As Double = CType(navigator.Evaluate(query), Double)  
Console.WriteLine(total)  
XPathDocument document = new XPathDocument("books.xml");  
XPathNavigator navigator = document.CreateNavigator();  
  
XPathExpression query = navigator.Compile("sum(//price/text())");  
Double total = (Double)navigator.Evaluate(query);  
Console.WriteLine(total);  

O exemplo usa o books.xml arquivo 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>

posição e últimas funções

O Evaluate método está sobrecarregado. Um dos Evaluate métodos usa um XPathNodeIterator objeto como parâmetro. Esse método específico Evaluate é idêntico ao Evaluate método que usa apenas um XPathExpression objeto como um parâmetro, exceto que permite que um argumento de conjunto de nós especifique o contexto atual no qual executar a avaliação. Esse contexto é necessário para as funções XPath position() e last(), pois elas são relativas ao nó de contexto atual. A menos que sejam usadas como predicados em uma etapa de localização, as funções position() e last() exigem uma referência a um conjunto de nós para serem avaliadas; caso contrário, as funções position e last retornam 0.

Consulte também