XML et récupération de noeuds suivant un chemin - PHP - Programmation
Marsh Posté le 06-05-2009 à 14:06:55
Pourquoi faire une structure en arbre dans des array alors qu'XML est nativement une structure en arbre ? Ton array, par ailleurs, mélange attributs et éléments.
DOM est sans doute le plus adapté pour faire ce job, efficacement et proprement.
Marsh Posté le 08-05-2009 à 14:15:06
J'avais le même souci.
J'ai fait une class PHP5 basée sur SimpleXML et DomDocument qui gère les conversions de noeuds XML en tableau, et recréé des fichiers XML à partir des tableaux.
Cette class a aussi un autre avantage : elle est à même de gérer les noeuds contenant des itérations de là même manière qu'il y ait une ou n itérations d'un noeud
pour faire simple, dans ton exemple tu as deux noeud "sections" en simpleXml tu as donc :
Code :
|
Mais dans le cas ou il pourrait y en avoir n mais qu'il n'y en a qu'un tu es obligé de procéder comme ca :
Code :
|
Tous se fait dans la déclaration d'un attribut enumerable="true"
http://darknesss.free.fr/XmlParser.class.zip
les méthodes qui t'intéressent sont XmlParser::getArray et XmlParser::cleanXmlArray
Marsh Posté le 08-05-2009 à 18:30:53
@guybrush : je veux avoir un array pour pouvoir ajouter des informations dynamiques, et donc me "trimbaler" le XML dans mon processus deviendrait vite très lourd.
@the_bigboo : je vais tester ta classe, merci
Marsh Posté le 08-05-2009 à 22:06:58
Tiens moi au courant si tu as des idées d'optimisations
Les feedbacks ca m'intéresse !
Marsh Posté le 05-05-2009 à 19:37:42
Bonjour,
Je suis en train de faire une sorte de parseur perso en PHP, mais j'ai des gros problèmes de lenteurs. Voici un exemple de XML :
et prenons par exemple le chemin sec1/cat1/pag1/, je veux obtenir un array qui ressemble à ça :
J'y arrive avec simpleXML, (pas à le faire avec getElementById() de DOM), en faisant du XPath pour chaque noeud, enfin le truc pas optimisé du tout .
Du coup ma question est : est-ce que vous connaissez un moyen de faire ca propre et rapidement ?
Merci
Message édité par an3k le 05-05-2009 à 19:51:56