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