J'utilise libxml2 pour analyser HTML. Je souhaite supprimer certaines balises de mise en forme telles que <center>
, tout en conservant leur contenu (par exemple, un lien).libxml2 - supprimer l'enfant, mais pas les petits-enfants
Cela signifie que je vais devoir supprimer certains nœuds enfants de mon xmlNodeSet
, mais conserver les enfants de ce nœud.
En ce moment, je me suis ce code:
xmlNodePtr parentNode = nodes->nodeTab[i];
if (parentNode != NULL) {
xmlNodePtr child = parentNode->children;
xmlNodePtr parentNextSibling = parentNode->next;
xmlNodePtr grandParent = NULL;
while (child) {
xmlUnlinkNode(child);
if (parentNextSibling != NULL) {
xmlAddPrevSibling(parentNextSibling, child);
}
else {
if (grandParent == NULL)
grandParent = parentNode->parent;
xmlAddChild(grandParent, child);
}
child = child->next;
}
xmlUnlinkNode(parentNode);
xmlFree(parentNode);
}
Le code fait ajouter l'enfant au document, mais il supprime également le nœud que je l'ajouter en tant que frères et soeurs à. Qu'est-ce que je fais mal?