La función DOMXPath::query() es una función incorporada en PHP que se usa para evaluar la expresión XPath dada.
Sintaxis:
DOMNodeList DOMXPath::query( string $expression, DOMNode $contextnode, bool $registerNodeNS )
Parámetros: esta función acepta tres parámetros, como se mencionó anteriormente y se describe a continuación:
- $expresión: Especifica la expresión XPath a ejecutar.
- $contextnode (Opcional): Especifica el contextnode opcional para realizar consultas XPath relativas. De forma predeterminada, las consultas son relativas al elemento raíz.
- $registerNodeNS (Opcional): Especifica el registerNodeNS opcional para deshabilitar el registro automático del Node de contexto.
Valor devuelto: esta función devuelve una DOMNodeList que contiene todos los Nodes que coinciden con la expresión XPath dada. Cualquier expresión que no devuelva Nodes devolverá una DOMNodeList vacía.
Los siguientes programas ilustran la función DOMXPath::query() en PHP:
Programa 1: En este programa buscaremos todos los valores de elementos de elementos con contenido de nombre.
<?php // Create a new DOMDocument instance $document = new DOMDocument(); // Create a XML $xml = <<<XML <?xml version="1.0" encoding="utf-8"?> <root> <content> First </content> <content> Second </content> <content> Third </content> </root> XML; // Load the XML $document->loadXML($xml); // Create a new DOMXPath instance $xpath = new DOMXPath($document); // Get the root element $tbody = $document->getElementsByTagName('root')->item(0); // Get all the element with name content $query = '//content'; // Execute the query $entries = $xpath->query($query); foreach ($entries as $entry) { echo $entry->nodeValue . "<br>"; } ?>
Producción:
First Second Third
Programa 2: En este programa contaremos todos los elementos con nombre h1.
<?php // Create a new DOMDocument instance $document = new DOMDocument(); // Create a XML $xml = <<<XML <?xml version="1.0" encoding="utf-8"?> <root> <h1> Hello </h1> <h1> World </h1> <h1> Foo </h1> <h1> Bar </h1> </root> XML; // Load the XML $document->loadXML($xml); // Create a new DOMXPath instance $xpath = new DOMXPath($document); // Get the root element $tbody = $document->getElementsByTagName('root')->item(0); // Get all the element with name h1 $query = '//h1'; // Execute the query $entries = $xpath->query($query); // Count the number of headings echo count($entries); ?>
Producción:
4
Referencia: https://www.php.net/manual/en/domxpath.query.php