The DOMXPath::query() function is an inbuilt function in PHP which is used to evaluate the given XPath expression.
Syntax:
DOMNodeList DOMXPath::query( string $expression, DOMNode $contextnode, bool $registerNodeNS )
Parameters: This function accept three parameters as mentioned above and described below:
- $expression: It specifies the XPath expression to execute.
- $contextnode (Optional): It specifies the optional contextnode for doing relative XPath queries. By default, the queries are relative to the root element.
- $registerNodeNS (Optional): It specifies the optional registerNodeNS to disable automatic registration of the context node.
Return Value: This function returns a DOMNodeList containing all nodes matching the given XPath expression. Any expression which does not return nodes will return an empty DOMNodeList.
Below given programs illustrate the DOMXPath::query() function in PHP:
Program 1: In this program we will fetch all the element values of elements with name content.
<?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>" ;
} ?> |
Output:
First Second Third
Program 2: In this program we will count all the elements with name 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 );
?> |
Output:
4
Reference: https://www.php.net/manual/en/domxpath.query.php