Hay muchas formas para convertir estructuras de datos como arrays y objetos a XML.
Convertir estos datos a XML facilita la transmisión de datos a través de sistemas heterogéneos, y es utilizado en web services, SOAP, Xml-Rpc, Ajax y demas tecnologías.
Una de las mejores opciones para convertir arrays y objetos es utilizar XML_Serializer de Pear. Pear es un repositorio muy completo de clases con distintas funcionalidades.
Con PHP 5, pear se instala por defecto. En un sistema Linux, generalmente se encuentra en /usr/local/php (si PHP es compilado desde el código fuente), o en /usr/share/pear si PHP fue instalado via RPM.
Para instalar XML_Serializer y sus dependencias estos son los pasos a ejecutar en la linea de comando del shell:
$ pear install XML_Util
$ pear install XML_Parser
$ pear install channel://pear.php.net/XML_Serializer-0.18.0
Una vez instalado, ya puede ser utilizado en un script, de la siguiente manera:
<?php
// Set error reporting to ignore notices
error_reporting(E_ALL ^ E_NOTICE);
// Include XML_Serializer
require_once ‘XML/Serializer.php’;
// Some data to transform
$palette = array(’red’, ‘green’, ‘blue’);
// An array of serializer options
$serializer_options = array (
’addDecl’ => TRUE,
’encoding’ => ‘ISO-8859-1′,
’indent’ => ‘ ’,
’rootName’ => ‘palette’,
’defaultTagName’ => ‘color’,
);
// Instantiate the serializer with the options
$Serializer = new XML_Serializer($serializer_options);
// Serialize the data structure
$status = $Serializer->serialize($palette);
// Check whether serialization worked
if (PEAR::isError($status)) {
die($status->getMessage());
}
// Display the XML document
header(’Content-type: text/xml’);
echo $Serializer->getSerializedData();
?>
El resultado sería el siguiente:
<?xml version="1.0" encoding="ISO-8859-1"?>
<palette>
<color>red</color>
<color>green</color>
<color>blue</color>
</palette>
(ejemplos obtenidos de Sitepoint)
Así como esto funciona con arrays, tambien funciona con objetos y sus propiedades.