Avalia as expressões XPath usando XPathNavigator
A classe de XPathNavigator fornece o método de Evaluate para avaliar uma expressão XPath. O método de Evaluate usa uma expressão XPath, avalia-a e retorna um tipo XPath W3C de booleano, de número, de cadeia de caracteres, ou de conjunto do nó com base no resultado da expressão XPath.
O método de avaliação
O método de Evaluate usa uma expressão XPath, avalia-a, e retorna um resultado de tipo booleano (Boolean), o número (Double), a cadeia de caracteres (String), ou do conjunto de nó (XPathNodeIterator). Por exemplo, o método de Evaluate pode ser usado em um método matemático. O código exemplo a seguir calcula o custo total de todos os livros no arquivo de books.xml
.
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 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>
funções de posição e o último
O método de Evaluate está sobrecarregado. Um dos métodos de Evaluate utiliza um objeto de XPathNodeIterator como um parâmetro. Este método de Evaluate de detalhe é idêntico ao método de Evaluate que utiliza apenas um objeto de XPathExpression como um parâmetro, exceto que permite que a um nó do argumento especifica o contexto atual para executar sobre a avaliação. Este contexto é necessário para o XPath position()
e funções de last()
que são relativos ao nó atual de contexto. A menos que usado como um predicado em uma etapa local, position()
e funções de last()
requerem uma referência a um nó definida para ser avaliado de outra forma, position
e funções last
de retorno de 0
.