|
XMLAPI void xml_delete(XML * piece)
{
ELEMENTLIST * list;
if (!piece) return;
if (piece->parent != NULL) {
list = piece->parent->children;
while (list != NULL && list->element != piece) list = list->next;
if (list != NULL) {
if (list->next != NULL) list->next->prev = list->prev;
if (list->prev != NULL) list->prev->next = list->next;
}
if (list == piece->parent->children) piece->parent->children = list->next;
if (list == piece->parent->lastchild) piece->parent->lastchild = list->prev;
if (list != NULL) FREE ((void *) list);
}
xml_free (piece);
}
XMLAPI void xml_delete_pretty(XML * piece)
{
XML * prev = xml_prev (piece);
XML * next = xml_next (piece);
if (!strcmp (xml_textval (next), "\n")) xml_delete (next);
xml_delete (piece);
if (!xml_prev (prev) && !strcmp (xml_textval (prev), "\n")) xml_delete (prev);
}
|