Inscription -

Informations

Cree le 07/05/2010

Modifie le 07/05/2010

Php

# Elfangels

#####

Actions

Participants

Pas de participants

Associations

Pas de dossiers associes

Partager

Share |

Convertir un tableau associatif en XML

Voici une fonction bien pratique qui permet de transformer un tableau associatif en document XML :

/**
 * Transforme un tableau associatif en XML
 * @param $root   string  nom de la balise root
 * @param $array  array   tableau a transformer
 */
function array_2_xml($root,$array)
{
    // Créer le document
    $document = new DOMDocument('1.0', 'utf-8');
    
    // Créer l'élément root
    $root = $document->createElement($root);
    $document->appendChild($root);
    
    // Ajouter les éléments du tableau à l'élément root
    foreach ($array as $key => $value) {
        if (substr($key,0,1) == '@') {
            // Ajouter l'attribut
            $root->setAttribute(substr($key,1),$value);
        } else {
            // Créer et ajouter l'élément
            $root->appendChild(element_2_element($document,$key,$value));
        }
    }
    
    // Retourner le XML
    return $document->saveXML();
}

/**
 * Transforme l'élément d'un tableau associatif en DOMElement
 * @param $document DOMDocument document
 * @param $key      string      nom de l'élément
 * @param $value    mixed       contenu de l'élément
 */
function element_2_element(DOMDocument $document,$key,$value)
{
    // Créer l'élément
    $element = $document->createElement($key,is_array($value) ? null : $value);
    
    // Ajouter des sous éléments si nécéssaire
    if (is_array($value)) {
        foreach ($value as $key_2 => $value_2) {
            if (substr($key_2,0,1) == '@') {
                // Ajouter l'attribut
                $element->setAttribute(substr($key_2,1),$value_2);
            } else {
                // Créer et ajouter le sous élément
                $element->appendChild(element_2_element($document,$key_2,$value_2));
            }
        }
    }
    
    // Retourner l'élément
    return $element;
}
Exemple d'utilisation :

echo array_2_xml('test',array(
                          '@bli' => 'bla',
                          'bla' => 'blu',
                          'blo' => array(
                                     'blu' => 'bla',
                                     '@ble' => 'bli',
                                     'blo' => 'bli'
                                   ),
                          'blu' => 'bli'
                ));
Retourne :

<?xml version="1.0" encoding="utf-8"?>
<test bli="bla">
   <bla>blu</bla>
   <blo ble="bli">
      <blu>bla</blu>
      <blo>bli</blo>
   </blo>
   <blu>bli</blu>
</test>

Commentaires





20/09/2011, 16h57 - # abakeely
it's good
Webmaster Up - Portfolio - Credits - 2005/../2009
NeoTech Center
ContestOrg Homea NeoCover Perrin's Team Webmaster Up WebProjectHelper