(PHP 5 >= 5.1.0, PHP 7, PHP 8)
DOMXPath::evaluate — Evalúa una expresión XPath dada y devuelve un resultado tipado si es posible
$expression
, ?DOMNode $contextNode
= null
, bool $registerNodeNS
= true
): mixed
Ejecuta la expresión XPath expression
y devuelve un resultado tipado si es posible.
expression
La expresión XPath a ejecutar.
contextNode
El argumento opcional contextNode
puede ser
especificado para realizar consultas XPath relativas. Por omisión, las consultas
son relativas al elemento root.
registerNodeNS
Whether to automatically register the in-scope namespace prefixes of the context node to the DOMXPath object. This can be used to avoid needing to call DOMXPath::registerNamespace() manually for each in-scope namespaces. When a namespace prefix conflict exists, only the nearest descendant namespace prefix is registered.
Los siguientes errores pueden ocurrir al utilizar una expresión que invoca retrollamadas PHP.
php:function
es utilizada y el nombre del gestor
no es un string.
Devuelve un resultado tipado si es posible o un DOMNodeList
que contiene todos los nodos que coinciden con la expresión XPath
expression
.
Si el argumento expression
está mal formado
o bien si el argumento contextNode
es inválido,
el método DOMXPath::evaluate() devolverá false
.
Ejemplo #1 Recuperación del número total de libros en inglés
<?php
$doc = new DOMDocument;
$doc->load('examples/book-dcobook.xml');
$xpath = new DOMXPath($doc);
$tbody = $doc->getElementsByTagName('tbody')->item(0);
// nuestra consulta es relativa al nodo tbody
$query = 'count(row/entry[. = "en"])';
$entries = $xpath->evaluate($query, $tbody);
echo "Hay $entries libros en inglés\n";
?>
El resultado del ejemplo sería:
Hay 2 libros en inglés