Documentación offline PHP master

DOMXPath::query

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

DOMXPath::query

Evalúa la expresión XPath dada

Descripción#

public DOMXPath::query(string $expression, [DOMNode $contextNode], [bool $registerNodeNS]): mixed
```php

Evalúa la expresión `expression` XPath dada.

## Parámetros

`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 raíz.

`registerNodeNS`  
Indica si se deben registrar automáticamente los prefijos de espacio de nombres en vigor del nodo de contexto en el objeto `DOMXPath`. Esto puede ser utilizado para evitar tener que llamar manualmente a DOMXPath::registerNamespace para cada espacio de nombres en vigor. En caso de conflicto de prefijos de espacio de nombres, solo se registra el prefijo de espacio de nombres descendiente más cercano.

## Valores devueltos

Devuelve un `DOMNodeList` que contiene todos los nodos que coinciden con la expresión `expression` XPath dada. Todas las expresiones que no devuelvan ningún nodo devolverán un `DOMNodeList` vacío.

Si el argumento `expression` está malformado o el argumento `contextNode` es inválido, DOMXPath::query devolverá `false`.

## Errores/Excepciones

Los siguientes errores pueden ocurrir al utilizar una expresión que invoca retrollamadas PHP.

- Lanza una Error si una retrollamada PHP es invocada pero ninguna retrollamada está registrada, o si la retrollamada nombrada no está registrada.

- Lanza una TypeError si la sintaxis `php:function` es utilizada y el nombre del gestor no es un string.

- Lanza una Error si un objeto no-DOM es devuelto por una retrollamada.

## Ejemplos

Recuperación de todos los libros en inglés
preserveWhiteSpace = false; $doc->load('examples/book-docbook.xml'); $xpath = new DOMXPath($doc); // Comenzamos en el elemento raíz $query = '//book/chapter/para/informaltable/tgroup/tbody/row/entry[. = "en"]'; $entries = $xpath->query($query); foreach ($entries as $entry) { echo "Libro encontrado {$entry->previousSibling->previousSibling->nodeValue}," . " por {$entry->previousSibling->nodeValue}\n"; } ?>
El ejemplo anterior mostrará:

    Libro encontrado : The Grapes of Wrath, por John Steinbeck
    Libro encontrado : The Pearl, por John Steinbeck



También podemos utilizar el argumento `contextNode` para acortar nuestra expresión :
preserveWhiteSpace = false; $doc->load('examples/book-docbook.xml'); $xpath = new DOMXPath($doc); $tbody = $doc->getElementsByTagName('tbody')->item(0); // nuestra consulta es relativa al nodo tbody $query = 'row/entry[. = "en"]'; $entries = $xpath->query($query, $tbody); foreach ($entries as $entry) { echo "Libro encontrado : {$entry->previousSibling->previousSibling->nodeValue}," . " por {$entry->previousSibling->nodeValue}\n"; } ?>

```php

Véase también#

DOMXPath::query