Cómo convertir un array a XML en PHP

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

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP