Cree le 07/05/2010
Modifie le 07/05/2010
Php




Pas de participants
Pas de dossiers associes
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>