Requisito previo: Leer conceptos básicos de XML
La función SimpleXMLElement::getDocNamespaces() es una función incorporada en PHP que se utiliza para recuperar los espacios de nombres declarados en el documento XML.
Sintaxis:
array SimpleXMLElement::getDocNamespaces( $recursive, $from_root )
Parámetros: esta función acepta dos parámetros, como se mencionó anteriormente y se describe a continuación:
- $recursivo: Es un parámetro opcional y booleano. Su valor predeterminado es Falso. Si se pasa True como parámetro, devuelve espacios de nombres en el Node principal y secundario de forma recursiva. Si se establece en False, solo devuelve los espacios de nombres del Node principal.
- $from_root: Es un parámetro opcional y booleano. El valor por defecto es verdadero. Si se establece en True, comprobará los espacios de nombres desde la raíz del documento XML. Si se establece en False, verificará los espacios de nombres en un Node secundario.
Valor devuelto: esta función devuelve una array de nombres de espacios de nombres con sus URI asociados.
Nota: Esta función está disponible para PHP 5.1.2 y versiones posteriores.
Los siguientes programas ilustran la función SimpleXMLElement::getDocNamespaces() en PHP:
Programa 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>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); // Retrieving namespaces $result = $xml->getDocNamespaces(); // Display output print_r($result); ?>
Producción:
Array ( [user_id] => http://geeksforgeeks.org/user )
Programa 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); // Retrieving namespaces $result = $xml->getDocNamespaces(TRUE); // Displaying output print_r($result); ?>
Producción:
Array ( [user_id] => http://geeksforgeeks.org/user [name] => http://geeksforgeeks.org/user/name )
Referencia: https://www.php.net/manual/en/simplexmlelement.getdocnamespaces.php