Saltar al contenido
Codifíca.me | Desarrollo web | Programación

Convertir XML a CSV con PHP o desde Linux

17 noviembre, 2016
xml-to-csv-conversion-tool-convert-xml-file-to-csv

Hoy os traigo este post, que como adivinarás trata de cómo pasear un fichero XML a CSV utilizando PHP . (Esta redundancia del título da puntos para el SEO) 😉

Bien, el código es simple, utilizamos la función simplexml_load_file para capturar el xml y después crearemos el CSV con ayuda de la función createCsv que pondrá en columnas cada nodo xml que se vaya encontrando.

xml-to-csv-conversion-tool-convert-xml-file-to-csv
Este es el código:

$Archivo='convertido.xml';
 
    if (file_exists($Archivo)) 
           {
       $xml = simplexml_load_file($Archivo);
       $f = fopen('convertido.csv', 'w');
       createCsv($xml, $f);
       fclose($f);
    }
 
    function createCsv($xml,$f)
    {
 
        foreach ($xml->children() as $item) 
        {
 
           $hasChild = (count($item->children()) > 0)?true:false;
 
        if( ! $hasChild)
        {
           $put_arr = array($item->getName(),$item); 
           fputcsv($f, $put_arr ,',','"');
 
        }
        else
        {
         createCsv($item, $f);
        }
     }
 
    }

Por si te gusta más hacerlo desde linux, puedes instalar la libreria xml2 en tu equipo, y convertir facilmente tu xml en csv,

para esto, solo tienes que instalar y ejecutar el comando:

Instalar

sudo apt-get install xml2

Ejecutando

xml2 <tufichero.xml> tufichero.txt

y listo, lo abres desde un editor de csv y te leerá correctamente los campos.