DOMXPath::query
DOMXPath::query
(PHP 5, PHP 7)
DOMXPath::query — Evaluates the given XPath expression
Description
public DOMNodeList DOMXPath::query ( string $expression [, DOMNode $contextnode [, bool $registerNodeNS = true ]] )
Executes the given XPath expression
.
Parameters
-
expression
-
The XPath expression to execute.
-
contextnode
-
The optional
contextnode
can be specified for doing relative XPath queries. By default, the queries are relative to the root element. -
registerNodeNS
-
The optional
registerNodeNS
can be specified to disable automatic registration of the context node.
Return Values
Returns a DOMNodeList containing all nodes matching the given XPath expression
. Any expression which does not return nodes will return an empty DOMNodeList.
If the expression
is malformed or the contextnode
is invalid, DOMXPath::query() returns FALSE
.
Changelog
Version | Description |
---|---|
5.3.3 | The registerNodeNS parameter was added. |
Examples
Example #1 Getting all the english books
<?php $doc = new DOMDocument; // We don't want to bother with white spaces $doc->preserveWhiteSpace = false; $doc->Load('book.xml'); $xpath = new DOMXPath($doc); // We starts from the root element $query = '//book/chapter/para/informaltable/tgroup/tbody/row/entry[. = "en"]'; $entries = $xpath->query($query); foreach ($entries as $entry) { echo "Found {$entry->previousSibling->previousSibling->nodeValue}," . " by {$entry->previousSibling->nodeValue}\n"; } ?>
The above example will output:
Found The Grapes of Wrath, by John Steinbeck Found The Pearl, by John Steinbeck
We can also use the contextnode
parameter to shorten our expression:
<?php $doc = new DOMDocument; $doc->preserveWhiteSpace = false; $doc->load('book.xml'); $xpath = new DOMXPath($doc); $tbody = $doc->getElementsByTagName('tbody')->item(0); // our query is relative to the tbody node $query = 'row/entry[. = "en"]'; $entries = $xpath->query($query, $tbody); foreach ($entries as $entry) { echo "Found {$entry->previousSibling->previousSibling->nodeValue}," . " by {$entry->previousSibling->nodeValue}\n"; } ?>
See Also
- DOMXPath::evaluate() - Evaluates the given XPath expression and returns a typed result if possible
© 1997–2017 The PHP Documentation Group
Licensed under the Creative Commons Attribution License v3.0 or later.
https://secure.php.net/manual/en/domxpath.query.php