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




Actions
Participants
Pas de participants
Associations
Pas de dossiers associes
Partager
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 -
abakeelyit's good
Tutoriaux
Services
Ressources
Forum
Partenaires

