Muchas veces debemos almacenar datos en un XML para su posterior uso. Para cumplir esta necesidad, tendremos que convertir los datos a XML y guardar el archivo XML. En este tutorial vamos a discutir sobre cómo crear un XML a partir de un array en PHP. Para ello hemos creado un script muy sencillo que convierte un array de PHP a XML. Puedes convertir todo tipo de arrays, desde arrays asociativos, hasta arrays multidimensionales.
Array PHP
Antes que nada, vamos a ver almacenar los datos de unos usuarios dentro de la variable $users_array.
$users_array = array( "total_users" => 3, "users" => array( array( "id" => 1, "name" => "Nitya", "address" => array( "country" => "India", "city" => "Kolkata", "zip" => 700102, ) ), array( "id" => 2, "name" => "John", "address" => array( "country" => "USA", "city" => "Newyork", "zip" => "NY1234", ) ), array( "id" => 3, "name" => "Viktor", "address" => array( "country" => "Australia", "city" => "Sydney", "zip" => 123456, ) ), ) );
Array a XML
Ahora vamos a convertir el array de usuario a XML mediante PHP gracias a la librerÃa SimpleXML.
//function defination to convert array to xml function array_to_xml($array, &$xml_user_info) { foreach($array as $key => $value) { if(is_array($value)) { if(!is_numeric($key)){ $subnode = $xml_user_info->addChild("$key"); array_to_xml($value, $subnode); }else{ $subnode = $xml_user_info->addChild("item$key"); array_to_xml($value, $subnode); } }else { $xml_user_info->addChild("$key",htmlspecialchars("$value")); } } } //creating object of SimpleXMLElement $xml_user_info = new SimpleXMLElement("<?xml version="1.0"?><user_info></user_info>"); //function call to convert array to xml array_to_xml($users_array,$xml_user_info); //saving generated xml file $xml_file = $xml_user_info->asXML('users.xml'); //success and error message based on xml creation if($xml_file){ echo 'XML file have been generated successfully.'; }else{ echo 'XML file generation error.'; }
Fichero XML
El archivo users.xml contendrá el siguiente xml.
<?xml version="1.0"?> <user_info> <total_users>3</total_users> <users> <item0> <id>1</id> <name>Nitya</name> <address> <country>India</country> <city>Kolkata</city> <zip>700102</zip> </address> </item0> <item1> <id>2</id> <name>John</name> <address> <country>USA</country> <city>Newyork</city> <zip>NY1234</zip> </address> </item1> <item2> <id>3</id> <name>Viktor</name> <address> <country>Australia</country> <city>Sydney</city> <zip>123456</zip> </address> </item2> </users> </user_info>
Fuente: codexworld.com