Thursday, January 22, 2026
HomeLanguagesPHP | SimpleXMLElement registerXPathNamespace() Function

PHP | SimpleXMLElement registerXPathNamespace() Function

Pre-requisite: Read XML Basics

The SimpleXMLElement::registerXPathNamespace() function is an inbuilt function in PHP which is used to create a namespace context for the XPath query to be executed next in a SimpleXML object.

Syntax:

bool SimpleXMLElement::registerXPathNamespace( $prefix, $namespace )

Parameter: This function accepts two parameters as mentioned above and described below:

  • $prefix: It is required parameter. It is used in the XPath query for the namespace given in $namespace.
  • $namespace:: It is required parameter. It specifies the namespace for the XPath query.

Return Value: It returns True on success or False on Failure.

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

Below programs illustrate the SimpleXMLElement::registerXPathNamespace() function in PHP:

Program 1:




<?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

Program 2:




<?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');
  
// Displaying 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.registerxpathnamespace.php

RELATED ARTICLES

Most Popular

Dominic
32475 POSTS0 COMMENTS
Milvus
119 POSTS0 COMMENTS
Nango Kala
6847 POSTS0 COMMENTS
Nicole Veronica
11977 POSTS0 COMMENTS
Nokonwaba Nkukhwana
12064 POSTS0 COMMENTS
Shaida Kate Naidoo
6986 POSTS0 COMMENTS
Ted Musemwa
7220 POSTS0 COMMENTS
Thapelo Manthata
6933 POSTS0 COMMENTS
Umr Jansen
6912 POSTS0 COMMENTS