Page 1 sur 1

DOmDocument->removeChild() et descendants

Posté : 10 juil. 2007, 23:11
par AVI3000
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

Posté : 11 juil. 2007, 02:50
par AB
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?

Posté : 11 juil. 2007, 07:33
par Cyrano
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 ;)

Posté : 11 juil. 2007, 07:35
par franck_benoit

Posté : 11 juil. 2007, 15:57
par AVI3000
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.

Posté : 11 juil. 2007, 16:20
par béka
si xpath te permet de faire des requête sur les noeuds. Donc c'est une bonne méthode. Et puis elle est propre.

Posté : 11 juil. 2007, 16:27
par AVI3000
$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