Je sais qu'il existe dom ou simpleXml pour ça, mais j'avais envie de faire ma propre petite fonction permettant de retourner le contenu d'un fichier XML dans un tableau.
Ça peut paraitre un peu du bricolage, mais cette fonction ne servira qu'a lire des documents léger, pas des grosses bibliothèques.
Je voulais juste savoir si au niveau des performances ça ne serait pas minable avec l'utilisation des regex. je rappelle c'est important que je ne l'utiliserais pour lire de petits documents de quelques ko seulement...
<?php
function xml_vers_array($fichier, $item, $elements){
$xml = file_get_contents($fichier);
preg_match_all('#<'.$item.'>(.*)</'.$item.'>#Usi', $xml, $temp);
$i = 0;
foreach($temp[1] as $temp2){
foreach($elements as $element){
preg_match_all('#<'.$element.'>(.*)</'.$element.'>#Usi', $temp2, $temp3);
$temp4[$i][$element] = $temp3[1][0];
}
$i++;
}
return $temp4;
}
$data = xml_vers_array('test.xml', 'item', array('element1', 'element2'));
print_r($data);
?>
Voici ce que donne le print_r() :Code : Tout sélectionner
Array
(
[0] => Array
(
[element1] => 1
[element2] => Test 1
)
[1] => Array
(
[element1] => 2
[element2] => Test 2
)
)
Code : Tout sélectionner
<?xml version="1.0" encoding="ISO-8859-1" ?>
<liste>
<item>
<element1>1</element1>
<element2>Test 1</element2>
</item>
<item>
<element1>2</element1>
<element2>Test 2</element2>
</item>
</liste>