[Résolu] [PHP - XML] Comment transformer XML en tableau

WRInaute accro
Bonjour,
je recherche un script qui me permettrait de transformer n'importe quelles données contenu dans un fichier xml en tableau en PHP, je m'explique : je dois récupérer certaines données de 5 sites pour en tirer des stats. J'ai donc créer des fichiers de conf de chaque site en XML que je rapatri. Seulement, je suis bloqué, j'arrive pas à récupérer les données en tableau pour les traiter.

Voila ce que j'ai tester :
- -http://www.aidejavascript.com/article118.html?artsuite=0#sommaire_1
- Ya bien simpleXML mais je n'utilise pas cette version de PHP (-http://developpeur.journaldunet.com/tutoriel/php/040921-php-seguy-simplexml-1a.shtml)
- -http://www.commentcamarche.net/php/phpxml.php3

Mais je ne m'en sort pas, faut dire que je connait un peu XML mais je suis pas un expert, et dans ce cas, les données ont quand même une structure assez complexe. Est-ce que quelqu'un connait une classe ou des fonctions simples à mettre en place ?
 
WRInaute accro
Merci Rottman, mais ton tuto est efficace pour des fichiers XML simples. Les miens sont assez balaises : les sites dont je parlent sont en plusieurs langues et il y en a même un qui est dans 17 pays. Les fichiers XML que j'importent ne sont pas des fichiers RSS mais tous les fichiers de config de chaque site.

Le système que je recherche ressemblerait beaucoup à celui que j'ais cité -http://www.aidejavascript.com/article118.html?artsuite=0#sommaire_1 mais je n'arrive pas à le faire fonctionner (si il fonctionne) ...
 
WRInaute accro
Apparement, Il faudrait un script qui utilise xml-parse-into-struct.php, y'en a un ici : -http://fr2.php.net/manual/fr/function.xml-parse-into-struct.php , je vais regarder...
 
WRInaute discret
Mais j'utilise ce code, c'est comme celui de clubic casiment
-http://www.asp-php.net/ressources/bouts_de_code.php?codid=43
 
WRInaute accro
Merci willyz85, mais c'est pas du RSS que je veux parser. Je suis en train de bosser avec celui qui a créer ce script -http://www.aidejavascript.com/article118.html?artsuite=0#sommaire_1 : vraiment terrible mais pour l'instant, il ne marche pas sur toutes les versions de PHP. Je vous tiendrait au courant...
 
WRInaute impliqué
Lorsque le fichier est volumineux, c'est une très mauvaise idée que d'utiliser un tableau en intermédiare, il vaut mieux utilser SAX avec les callback.
 
WRInaute accro
Pour ceux que ça interresse :

Tout cette recherche sur la manière de parser un fichier XML m'a permis de trouver pas mal de solution :
- les expressions régulières comme le propose Rottman et willyz85 : pour des petits fichiers RSS, ça à l'air de fonctionner très bien.
- la librairie EXPAT de PHP
- simpleXML avec PHP5
- SAX avec les callback comme le propose shroom (je peux pas en parler, je connais pas, d'ailleurs, shroom, si tu pouvais nous en expliquer brièvement le principe, ce serait sympa)

J'ai choisi la solution de la librairie EXPAT qui correspond assez bien à mes besoins (J'aurais bien choisi simpleXML mais y'a pas PHP5 sur l'hébergement, snifff). Pour ce faire, je doit tirer un grand coup de chapeau à Marabbeh qui a fait ce code très efficace : http://www.aidejavascript.com/article118.html
 
WRInaute impliqué
blman a dit:
- SAX avec les callback comme le propose shroom (je peux pas en parler, je connais pas, d'ailleurs, shroom, si tu pouvais nous en expliquer brièvement le principe, ce serait sympa)

SAX est une des deux API officielles pour parser du XML avec DOM. La solution que tu as retenu utilise justement SAX ( librairie Expat ), par contre le passage par un tableau intermédiaire n'est pas utile, pourquoi ne pas effectuer directement les traitement dans les fonctions callback. Si ton fichier contient 20 enregistrements, pas de problème, s'il en contient 2000 ton hébergeur va te jeter en moins d'une journée.

Il y a des exemples de manipulation de données avec Expat un peu partout sur le web.
 
WRInaute accro
Dans le cas précis de ce que j'ai à faire, les tableaux vont me suffir amplement sans me prendre trop de ressources mais je vais quand même me renseigner sur ce que tu dis, car ça m'a l'air bien interressant tout ça... Merci en tout cas pour ces précisions.
 
Discussions similaires
Haut