Compartir a través de


Evaluación de expresiones XPath con XPathNavigator

La clase XPathNavigator incluye el método Evaluate para evaluar una expresión XPath. El método Evaluate toma una expresión XPath, la evalúa y devuelve un tipo XPath del W3C de tipo booleano, numérico, de cadena o de conjunto de nodos basándose en el resultado de la expresión XPath.

Método de evaluación

El método Evaluate toma una expresión XPath, la evalúa y devuelve un resultado con tipo de tipo booleano (Boolean), numérico (Double), de cadena (String) o de conjunto de nodos (XPathNodeIterator). Por ejemplo, el método Evaluate se podría utilizar en un método matemático. El siguiente código de ejemplo calcula el precio total de todos los libros del archivo 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);  

En el ejemplo se toma como entrada el archivo 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>

Funciones position y last

El método Evaluate está sobrecargado. Uno de los métodos Evaluate toma un objeto XPathNodeIterator como parámetro. Este método Evaluate en concreto es idéntico al método Evaluate que solo toma un objeto XPathExpression como parámetro, excepto en que permite que un argumento de un conjunto de nodos especifique el contexto actual en el que realizar la evaluación. Este contexto es necesario para las funciones XPath position() y last(), ya que son relativas al nodo de contexto actual. A menos que se utilicen como predicado en un paso de ubicación, las funciones position() y last() necesitan una referencia a un conjunto de nodos para poder ser evaluadas; de lo contrario, las funciones position y last devuelven 0.

Vea también