php8.5
Home/ Manual/ simplexml / simplexmlelement/ SimpleXMLElement::xpath

SimpleXMLElement::xpath

PHP function Edit on GitHub ✎

(PHP 5, PHP 7, PHP 8)

Runs XPath query on XML data

Description

SimpleXMLElement::xpath(string $expression): array|null|false

The xpath method searches the SimpleXML node for children matching the XPath expression.

Parameters

expression

An 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

VersionDescription
8.5.0If 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
<?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:

output
/a/b/c: text
/a/b/c: stuff
b/c: text
b/c: stuff

Notice that the two results are equal.

See Also

  • SimpleXMLElement::registerXPathNamespace
  • SimpleXMLElement::getDocNamespaces
  • SimpleXMLElement::getNamespaces
  • simplexml.examples-basic

Source: reference/simplexml/simplexmlelement/xpath.xml · from the official PHP manual (php/doc-en)