Saturday, December 28, 2024
Google search engine
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

Recent Comments