Requisito previo: Leer conceptos básicos de XML
La función SimpleXMLElement::xpath() es una función incorporada en PHP que ejecuta la consulta XPath en el documento XML.
Sintaxis:
SimpleXMLElement::xpath( $path )
Parámetros: esta función acepta un único parámetro $ruta que se requiere. Se utiliza para especificar la ruta XPath del documento XML.
Valor de retorno: Devuelve una array de SimpleXMLElements en caso de éxito o False en caso de error.
Nota: Esta función está disponible en PHP 5.2.0 y versiones posteriores.
Ejemplo:
<?php // Loading XML document to $user $user = <<<XML <user> <id>12345</id> <username>Geeks123</username> <name>GeeksforGeeks</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); ?>
Producción:
Array ( [0] => SimpleXMLElement Object ( [0] => Geeks123 ) )
Ejemplo 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>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 $xml->registerXPathNamespace('u', 'http://geeksforgeeks.org/user'); // Retrieving xpaths $result = $xml->xpath('//u:id'); // Printing output foreach ($result as $id) { echo $id . "<br>"; } ?>
Producción:
12345
15980
Ejemplo 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>"; } ?>
Producción:
12345
57833
98944
Rakesh
Manjeet
Ak
Kumar
Singh
Singh
Referencia: https://www.php.net/manual/en/simplexmlelement.xpath.php