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
<single_user id= "1" >
<user_id:id>12345</user_id:id>
<username>Geeks123</username>
<name>GeeksforGeeks</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 // Retrieving xpaths $result = $xml ->xpath( '//u:id' );
// Printing output foreach ( $result as $id ) {
echo $id . "<br>" ;
} ?> |
12345
15980
Program 2:
<?php // Loading XML document to $user $user = <<<XML
<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>
<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>
<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 // 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>" ;
} ?> |
12345
57833
98944
Rakesh
Manjeet
Ak
Kumar
Singh
Singh
Reference: https://www.php.net/manual/en/simplexmlelement.registerxpathnamespace.php