Convertir un array a XML mediante PHP

Cuando necesitemos serializar un array PHP, podemos convertirlo a XML, almacenarlo en nuestro equipo y compartirlo si así lo deseamos. En dicho proceso, los pares clave/elemento se convertiran en nodos estructurales. Los nodos XML tendrán el mismo nombre que la clave de cada elemento al que pertenecen, y el valor se agregará como su nodo hijo.

Como habrás podido deducir, para este tutorial utilizaremos un array bidimensional. Los propios elementos del array cuentan con los campos titulo, enlace y descripción de un artículo. Al convertir el array a un documento XML, crearemos un nodo root llamado items. Después recorreremos el array y crearemos cada uno de los nodos hijos con los campos titule, link y description que he descrito antes.

Código PHP para convertir un array a XML

En este código lo que haremos es transformar un array a un documento XML. Para ello tendremos que recorrer todos los elementos del array mediante un foreach, pero antes debemos crear un objeto de la clase DOMDocument(). Utilizaremos este objeto para crear nuestro documento XML.

A continuación, creamos el elemento <items> y lo agregaremos al documento XML referenciandolo a nuestro objeto DOMDocument. Después, recorreremos el array para obtener el título, el enlace y descripción. Crearemos los nodos <title>, <link> y <description> para cada elemento y en ellos agregaremos cada uno de los datos correspondientes.

Después de convertir nuestro array a XML, lo guardaremos en un fichero. Este archivo podrá ser descargado por el usuario y eliminado permanentemente de la carpeta de nuestro servidor.

<?php
$input_array = array(
    'article' => array(
        array(
            'title' => 'Cómo dibujar una ruta sobre un mapa mediante la API de Google Maps Direction',
            'link' => 'http://programacion.net/articulo/como_dibujar_una_ruta_sobre_un_mapa_mediante_la_api_de_google_maps_direction_1973',
            'description' => 'En este tutorial veremos cómo dibujar una ruta entre dos localizaciones sobre un mapa utilizando la API de Google Maps Direction. Esta API te proporciona el servicio Direction el cual es ideal para dibujar rutas entre ubicaciones. Este servicio requiere que se dibuje tanto el inicio como el punto final de ruta. '
        ),
        array(
            'title' => 'Cambiar la clase de un elemento dinámicamente mediante jQuery',
            'link' => 'http://programacion.net/articulo/cambiar_la_clase_de_un_elemento_dinamicamente_mediante_jquery_1974',
            'description' => 'En este artículo vamos a ver cómo cambiar la clase de un elemento CSS utilizando jQuery. Ya hemos visto en anteriores tutoriales cómo cambiar el fichero CSS a llamar en el documento basándonos en el tamaño del viewport del usuario para hacer que una página sea responsive, y esto es muy similar, ya verás... '
        )
    )
);

$xml = new DOMDocument();

$rootNode = $xml->appendChild($xml->createElement("items"));

foreach ($input_array['article'] as $article) {
    if (! empty($article)) {
        $itemNode = $rootNode->appendChild($xml->createElement('item'));
        foreach ($article as $k => $v) {
            $itemNode->appendChild($xml->createElement($k, $v));
        }
    }
}

$xml->formatOutput = true;

$backup_file_name = 'file_backup_' . time() . '.xml';
$xml->save($backup_file_name);

header('Content-Description: File Transfer');
header('Content-Type: application/xml');
header('Content-Disposition: attachment; filename=' . basename($backup_file_name));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($backup_file_name));
ob_clean();
flush();
readfile($backup_file_name);
exec('rm ' . $backup_file_name);
?>

COMPARTE ESTE ARTÍCULO

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