DOmDocument->removeChild() et descendants

Eléphanteau du PHP | 29 Messages

10 juil. 2007, 23:11

Bonsoir,

Dans le manuel, on parle d'enfants pour cette fonction

Quand est-il des descendants (petits-enfants , arrières ... )

Existe-t-il une fonction qui supprime les descendants

Merci

ViPHP
AB
ViPHP | 5818 Messages

11 juil. 2007, 02:50

Ben je pense que tu n'es pas dans la bonne rubrique. Cela me fait plutôt penser à du Javascript.

A part ça peux tu donner un exemple de ce que tu veux faire?

Mammouth du PHP | 19672 Messages

11 juil. 2007, 07:33

Ben je pense que tu n'es pas dans la bonne rubrique. Cela me fait plutôt penser à du Javascript.
Non, DOM fait partie des extensions de PHP, même si JavaScript peut aussi le traiter, mais d'une autre manière et coté client ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 2 Messages

11 juil. 2007, 07:35


Eléphanteau du PHP | 29 Messages

11 juil. 2007, 15:57

merci Cyrano,

franck_benoit: l'exemple que tu cites ne traite que les fils (si je l'ai bien compris)
DomNode->remove_child — Supprime un fils de la liste des noeuds fils


le but est de supprimer des noeuds (petits-enfants , arrière, ...) renvoyé par xpath.

Le code suivant plante:
$grandParent->removeChild($petitFilsAsupprimer);
la nuit portant conseil, j'ai trouvé un façon de faire.
je ne sais pas s'il elle est très académique.
$xpath = new DOMXPath($doc);
foreach ( $xpath->query('//noeudCherche') as $noeudAsupprimer ) {
        $noeudAsupprimer->parentNode->removeChild($noeudAsupprimer);
}
testé, impeccable
S'il quelqu'un a mieux, je suis preneur.
Modifié en dernier par AVI3000 le 11 juil. 2007, 20:48, modifié 1 fois.

Mammouth du PHP | 536 Messages

11 juil. 2007, 16:20

si xpath te permet de faire des requête sur les noeuds. Donc c'est une bonne méthode. Et puis elle est propre.
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Eléphanteau du PHP | 29 Messages

11 juil. 2007, 16:27

$grandParent->removeChild($petitFilsAsupprimer); /* pas bon, ça plante */

/* donc recherche de paternité pour appliquer la méthode removeChild */
$noeudAsupprimer->parentNode->removeChild($noeudAsupprimer) ; /* bon */

// équivalent à DomDocument->removeDescendant($celuiCi); méthode à créer