SimpleXMLElement::xpath
(PHP 5, PHP 7, PHP 8)
Runs XPath query on XML data
Description
The xpath method searches the SimpleXML node for children matching the XPath expression.
Parameters
expressionAn XPath path
Return Values
Returns an array of SimpleXMLElement objects on success; or null or false in case of an error.
As of PHP 8.5.0, if the XPath expression returns something other than a node set (e.g. a boolean or number), an E_WARNING is emitted and false is returned instead of silently returning an empty array.
Changelog
| Version | Description |
|---|---|
| 8.5.0 | If the XPath expression returns something other than a node set, an E_WARNING is now emitted and false is returned. Previously, an empty array was returned silently. |
Examples
Xpath
<?php
$string = <<<XML
<a>
<b>
<c>text</c>
<c>stuff</c>
</b>
<d>
<c>code</c>
</d>
</a>
XML;
$xml = new SimpleXMLElement($string);
/* Search for <a><b><c> */
$result = $xml->xpath('/a/b/c');
foreach ($result as $node) {
echo '/a/b/c: ',$node,"\n";
}
/* Relative paths also work... */
$result = $xml->xpath('b/c');
foreach ($result as $node) {
echo 'b/c: ',$node,"\n";
}
?>The above example will output:
/a/b/c: text
/a/b/c: stuff
b/c: text
b/c: stuffNotice that the two results are equal.
See Also
SimpleXMLElement::registerXPathNamespaceSimpleXMLElement::getDocNamespacesSimpleXMLElement::getNamespaces- simplexml.examples-basic