DOM et sa chaîne de sortie.

Eléphant du PHP | 209 Messages

08 août 2009, 00:41

Bonsoir tout le monde,

Je suis en train de faire un petit script qui utilise DOM et d'un coup j'ai eu besoin de faire quelque chose que je n'avais jamais fait avant : inverser l'ordre d'apparition de deux noeuds. En gros, j'ai un noeud qui contient trois sous-noeuds et j'aimerais que dans la chaîne générée par saveXML les deux derniers sous-noeuds soit inversés. Bon certes, j'ai bien pensé à parcourir le noeud avec un foreach et le modifier... mais je me demandais s'il n'y avait pas plus rapide (plus beau en fait :D).

Merci d'avance.

[EDIT] Ça n'a pas l'air d'inspirer grand monde...
Du coup, je lâche ma 2éme question : Comment ne pas avoir la première ligne => virer le prologue de la chaîne de sortie ?

ViPHP
ViPHP | 4674 Messages

11 août 2009, 14:45

Hey :-),

Je ne comprends pas la question en fait … Tu peux reformuler (un exemple peut-être) ?
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 209 Messages

11 août 2009, 17:17

Hey,

Ah c'était donc ça !!! #-o

Donc en gros j'ai ça:

Code : Tout sélectionner

noeud / \ / \ sous sous noeud 1 noeud 2
Le xml de sortie est donc :

Code : Tout sélectionner

<noeud> <sous noeud 1> ... </sous noeud 1> <sous noeud 2> ... </ sous noeud 2> </noeud>
Et la méthode qui crée ces noeuds est obligée de les créer dans cet ordre.
Sauf que, j'aimerais que le xml de sortie soit celui-ci :

Code : Tout sélectionner

<noeud> <sous noeud 2> ... </sous noeud 2> <sous noeud 1> ... </ sous noeud 1> </noeud>
Les deux noeuds doivent être inversés, donc forcément, la solution la plus bête, c'est de parcourir les noeuds contenus dans le premier, avec une foreach, et d'en créer un nouveau qui contient les deux (il y en a forcément 2 !) sous noeuds dans l'ordre inverse. Mais je me demandais s'il y avait pas mieux, sans faire de boucle.
C'est plus clair j'espère ;).

ViPHP
ViPHP | 4674 Messages

11 août 2009, 17:30

Pourquoi ne pas utiliser DOMNode::insertBefore ? Cette méthode fait parti du DOM Core 2, donc un grand classique.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 209 Messages

11 août 2009, 17:32

Hywan, il roxe !
Je ne sais pas pourquoi j'y ai pas pensé avant !
Merci =D>

Et sinon, pour ma deuxième question (après le [EDIT]) ?
J'imagine que c'est pas très compliqué, mais comme pour le moment je gère ça à coup de str_replace, je me demande si y'a pas mieux.

ViPHP
ViPHP | 4674 Messages

11 août 2009, 17:52

Tu as accès aux CSS Selectors ? Tu as accès à XPath ? Je ne pense pas car tu bosses depuis le DOM. Donc sélectionne tout, et vire le premier élément de ton tableau (shift).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 991 Messages

21 août 2009, 23:24

Et oui Hywan il a la class ... quoi je suis le seul a trouver ca troll (drôle) ... ?

Oui un message inutile j'avoue mais , comme le souci est en apparence résolue :D :roll:
DevOps, Symfony4, Hoa

Eléphant du PHP | 209 Messages

22 août 2009, 12:54

Et oui Hywan il a la class ... quoi je suis le seul a trouver ca troll (drôle) ... ?

Oui un message inutile j'avoue mais , comme le souci est en apparence résolue :D :roll:
Inutile !??? :shock: Pas du tout ! Il a trop la class stout :D