|  | 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);
}
 |