Supprimer un nœud d’un arbre DOM

Problème

Vous avez un arbre DOM en mémoire et voulez supprimer un nœud de cet arbre.

Solution

La suppression d’un nœud s’effectue en deux étapes. La première consiste à détacher le nœud de l’arbre avec xmlUnlinkNode(). La seconde, optionnelle, est de libérer la mémoire de ce nœud avec xmlFreeNode().

Discussion

La suppression d’une feuille de l’arbre (un nœud sans descendants) est chose évidente pour un nœud n :


xmlUnlinkNode (n); 
xmlFreeNode (n);
 

Cependant, il faut savoir que ces deux opérations concernent à la fois le nœud spécifié en argument, mais aussi toute sa descendance. Ainsi, si vous souhaitez supprimer un nœud de l’arbre mais aussi tous ses fils et petits-fils, la méthode précédente est celle à suivre. Par contre, si vous ne souhaitez pas supprimer les nœuds fils, il vous faudra les rattacher un par un à l’un ou à plusieurs autres nœuds de l’arbre avec xmlNodeAddChild() avant de détacher le nœud que vous voulez supprimer.

Prototypes


void xmlUnlinkNode (xmlNodePtr cur); 
void xmlFreeNode (xmlNodePtr cur);
 

Voir aussi l’article Libxml2 et petits fichiers XML paru dans Linux Magazine France, numéro 51, juin 2003.

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Modifier un nœud d'un arbre DOM
Suivant
Parcourir un arbre DOM