Я использую libxml2 для разбора HTML. Я хочу удалить некоторые теги форматирования, такие как <center>
, сохраняя их содержимое (например, ссылку).
Это означает, что мне придется удалить некоторые дочерние узлы из моего xmlNodeSet
, но сохранить дочерние узлы этого узла.
Прямо сейчас я получил этот код:
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);
}
Код добавляет дочерний элемент в документ, но он также удаляет узел, к которому я добавлял его как родственный элемент. Что я делаю не так?