Friday, January 30, 2026
HomeLanguagesPHP | SimpleXMLElement XPath() Function

PHP | SimpleXMLElement XPath() Function

Pre-requisite: Read XML Basics

The SimpleXMLElement::xpath() function is an inbuilt function in PHP which runs XPath query on the XML document.

Syntax:

SimpleXMLElement::xpath( $path )

Parameters: This function accepts single parameter $path which is required. It is used to specify the XPath path of XML document.

Return Value: It returns an array of SimpleXMLElements on success or False on failure.

Note: This function is available on PHP 5.2.0 and newer version.

Example:




<?php
  
// Loading XML document to $user
$user = <<<XML
<user>
    <id>12345</id>
    <username>Geeks123</username>
    <name>neveropen</name>
    <phone>+91-XXXXXXXXXX</phone>
    <detail font-color="blue" font-size="24px">
        Noida India
    </detail>
</user>
XML;
  
// Loading string as simple xml object
$xml = simplexml_load_string($user);
  
// Retrieving xpaths
$result = $xml->xpath("username");
  
// Printing output
print_r($result);
   
?>


Output:

Array
(
    [0] => SimpleXMLElement Object
        (
            [0] => Geeks123
        )

)

Example 2:




<?php
  
// Loading XML document to $user
$user = <<<XML
<user xmlns:user_id="http://geeksforgeeks.org/user">
<single_user id="1">
    <user_id:id>12345</user_id:id>
    <username>Geeks123</username>
    <name>neveropen</name>
    <phone>+91-XXXXXXXXXX</phone>
    <detail font-color="blue" font-size="24px">
        Noida India
    </detail>
</single_user>
  
<single_user id="2">
    <user_id:id>15980</user_id:id>
    <username>Geeks54321</username>
    <name>Geeks</name>
    <phone>+91-XXXXXXXXXX</phone>
    <detail font-color="blue" font-size="24px">
        Noida India
    </detail>
</single_user>
</user>
XML;
  
// Loading string as simple xml object
$xml = simplexml_load_string($user);
  
// Registering xpath namespace
$xml->registerXPathNamespace('u', 'http://geeksforgeeks.org/user');
  
// Retrieving xpaths
$result = $xml->xpath('//u:id');
  
// Printing output
foreach ($result as $id) {
    echo $id . "<br>";
}
  
?>


Output:

12345
15980

Example 3:




<?php
  
// Loading XML document to $user
$user = <<<XML
<user xmlns:user_id="http://geeksforgeeks.org/user">
    <single_user id="1" xmlns:name="http://geeksforgeeks.org/user/name">
        <user_id:id>12345</user_id:id>
        <username>rakesh123</username>
        <name:firstname>Rakesh</name:firstname>
        <name:lastname>Kumar</name:lastname>
        <phone>+91-XXXXXXXXXX</phone>
        <detail>Noida India</detail>
    </single_user>
      
    <single_user id="2" xmlns:name="http://geeksforgeeks.org/user/name">
        <user_id:id>57833</user_id:id>
        <username>man123</username>
        <name:firstname>Manjeet</name:firstname>
        <name:lastname>Singh</name:lastname>
        <phone>+91-XXXXXXXXXX</phone>
        <detail>Kolkata, India</detail>
    </single_user>
      
    <single_user id="3" xmlns:name="http://geeksforgeeks.org/user/name">
        <user_id:id>98944</user_id:id>
        <username>ak98</username>
        <name:firstname>Ak</name:firstname>
        <name:lastname>Singh</name:lastname>
        <phone>+91-XXXXXXXXXX</phone>
        <detail>Noida India</detail>
    </single_user>
</user>
XML;
  
// Loading string as simple xml object
$xml = simplexml_load_string($user);
  
// Registering xpath namespace
$xml->registerXPathNamespace('u', 'http://geeksforgeeks.org/user');
$xml->registerXPathNamespace('un', 'http://geeksforgeeks.org/user/name');
  
// Retrieving xpaths
$result = $xml->xpath('//u:id');
$result_f_name = $xml->xpath('//un:firstname');
$result_l_name = $xml->xpath('//un:lastname');
  
// Printing output
foreach ($result as $id) {
    echo $id . "<br>";
}
     
foreach ($result_f_name as $f_name) {
    echo $f_name . "<br>";
}
  
foreach ($result_l_name as $l_name) {
    echo $l_name . "<br>";
}
  
?>


Output:

12345
57833
98944
Rakesh
Manjeet
Ak
Kumar
Singh
Singh

Reference: https://www.php.net/manual/en/simplexmlelement.xpath.php

RELATED ARTICLES

Most Popular

Dominic
32478 POSTS0 COMMENTS
Milvus
122 POSTS0 COMMENTS
Nango Kala
6849 POSTS0 COMMENTS
Nicole Veronica
11978 POSTS0 COMMENTS
Nokonwaba Nkukhwana
12065 POSTS0 COMMENTS
Shaida Kate Naidoo
6987 POSTS0 COMMENTS
Ted Musemwa
7222 POSTS0 COMMENTS
Thapelo Manthata
6934 POSTS0 COMMENTS
Umr Jansen
6917 POSTS0 COMMENTS