Muchas veces es necesario almacenar los datos en formato XML en la base de datos o en el archivo para su uso posterior. Para cumplir con este requisito es necesario convertir los datos a XML y guardar el archivo XML.

Las funciones de extensión SimpleXML proporcionan el conjunto de herramientas para convertir XML en un objeto. Estos objetos tratan con selectores de propiedades normales e iteradores de matrices.

Ejemplo 1:

<?php

 

function arrayToXml($array, $rootElement = null, $xml = null) {

    $_xml = $xml;

     

    

    if ($_xml === null) {

        $_xml = new SimpleXMLElement($rootElement !== null ? $rootElement : '<root/>');

    }

     

    

    foreach ($array as $k => $v) {

         

        

        if (is_array($v)) { 

             

            

            arrayToXml($v, $k, $_xml->addChild($k));

            }

             

        else {

             

            

            $_xml->addChild($k, $v);

        }

    }

     

    return $_xml->asXML();

}

 

$my_array = array (

'name' => 'GFG',

'subject' => 'CS',

 

    

    'contact_info' => array (

    'city' => 'Noida',

    'state' => 'UP',

    ),

);

 

echo arrayToXml($my_array);

?>

Producción:

<?xml version="1.0"?>
<root>
    <name> GFG </name>
    <subject> CS </subject>
    <contact_info >
        <city > Noida < /city >
        <state > UP < /state >
        <email > [email protected] </email>
    <contact_info>
<root>

El problema anterior se puede resolver usando la función array_walk_recursive (). Esta función convierte la matriz en un documento xml donde las claves de la matriz se convierten en valores y los valores de la matriz se convierten en elementos de xml.

Ejemplo 2:

<?php

 

$my_array = array (

    'a' => 'x',

    'b' => 'y',

     

    

    'another_array' => array (

        'c' => 'z',

    ),

);

 

$xml = new SimpleXMLElement('<root/>');

 

array_walk_recursive($my_array, array ($xml, 'addChild'));

 

print $xml->asXML();

?>

Producción:

<?xml version="1.0"? >
<root >
       <x> a </x >
       <y> b </y >
       <z> c </z >
</root >

Nota: Si el sistema genera un error de tipo: Error fatal de PHP: Error no detectado: La clase ‘SimpleXMLElement’ no se encuentra en /home/6bc5567266b35ae3e76d84307e5bdc78.php:24, simplemente instale php-xml, php-simplexml paquetes.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *