parseur xml

Petit nouveau ! | 3 Messages

19 juin 2009, 15:37

Bonjour à tous,

Je débute avec php xml_parser. notamment avec le type SAX.

Voilà mon problème :
j'essaye de récupérer la valeur des attributs d'une balise XML, tout va bien si la valeur en question est un mot simple,
mais si c'est un mot compsé ( séparé avec des espaces), il ne récupère que le premier mot et crée des attributs supplémentaires.

voici la balise XML : <results tuple="3" type="fruit, concombre ou tomate">

mon parseur :
echo '<c typechp='.$dernierTableauAttributsRencontres["TYPE"].'id='.$dernierTableauAttributsRencontres["TUPLE"].'>';

le code html généré : <c typechp="fruit," concombre="" ou="" tomate="" id="3">

Est-ce que quelqu'un a deja eu ce genre de problème, ou sait comment le résoudre?

ViPHP
ViPHP | 3300 Messages

19 juin 2009, 15:54

alors, la méthode SAX, ou DOM sont des méthodes de parsing de XML qui sont trés intéressantes, mais qui ont des cas d'utilisation bien précis en PHP

DOM sert uniquement quand on a pour but, de modifier, ou de réécrire du XML
SAX sert uniquement quand on a besoin d'analyser un flux partiel, ou particulierement gros (exemple un fichier xml d'1 Go

si tu n'es dans aucun de ces deux cas, tu as une trés grande chance de vouloir regarder php.net/simplexml qui comme son nom l'indique est un parseur simple (bien que ca ne soit pas non plus le plus user friendly de l'univers) et comme tu as déja des résultats avec SAX je n'ai aucun doute que tu trouveras le moyen de te débrouiller :)

PS: effectivement le probleme est quasi au niveau du xml qui ne devrait pas avoir d'attribut avec des données de type textuelle mais au contraire une balise à l'intérieur contenant ce texte. Mais la remarque sur SimpleXML reste entière.
Fait du php depuis que ca existe ou presque :)

Petit nouveau ! | 3 Messages

19 juin 2009, 17:37

La remarque sur la méthode DOM est intéressante, en effet, modifier un fichier XML c'est ce que je veux faire bientôt.

J'ai lu le manuel de SimpleXML, mais il n'est pas assuré qu'il ne fasse pas la meme interpretation que le SAX sur les noms composés.

Le problème c'est que je ne peut pas modifier les valeurs des attributs du fichier xml, quelqu'un n'airait pas rencontré ce problème de nom composé séparé avec des espaces?

ps: remarque : ce genre de nom composé est très bien reconnu par du script xlst.

ViPHP
ViPHP | 3300 Messages

20 juin 2009, 15:14

hmm, malgrès tout ton argument tu le récupères sous une variable unique donc tu pourrais peut etre la transformer avant réenvois non? en virant le ou et en explodant sur ', ' tu as un tableau correct par exemple
Fait du php depuis que ca existe ou presque :)

Invité
Invité n'ayant pas de compte PHPfrance

22 juin 2009, 11:40

Problème résolu en mettant des guilemets :

'<c typechp='"'.'.$dernierTableauAttributsRencontres["TYPE"].'"'.' id='.$dernierTableauAttributsRencontres["TUPLE"].'>';l

ViPHP
ViPHP | 3300 Messages

22 juin 2009, 21:40

personellement je ferait un coup de str_replace pour éviter de mettre des guillements simples, mais ok.

penses à mettre résolu
Fait du php depuis que ca existe ou presque :)