void sd_xmlElementFree ( sd_xmlElement node) { sd_xmlNode n; assert(node); if ( node->children ) { n = sd_xmlNode(sd_listTakeFirst(node->children)); while ( n ) { sd_xmlNodeFree(n); n = sd_xmlNode(sd_listTakeFirst(node->children)); } sd_listFree(node->children); } if ( node->attributes ) { n = sd_xmlNode(sd_listTakeFirst(node->attributes)); while ( n ) { sd_xmlNodeFree(n); n = sd_xmlNode(sd_listTakeFirst(node->attributes)); } sd_listFree(node->attributes); } if ( node->data ) { sd_xmlNodeFree(node->data); } sd_xmlNodeDeinit(sd_xmlNode(node)); os_free(node); }
static void sd_xmlParserElementFree ( sd_xmlParserElement element) { assert(element); if ( element ) { if ( element->name ) { os_free(element->name); } if ( element->data ) { os_free(element->data); } if ( element->attributes ) { sd_xmlParserAttribute attribute; attribute = (sd_xmlParserAttribute) sd_listTakeFirst(element->attributes); while ( attribute ) { sd_xmlParserAttributeFree(attribute); attribute = (sd_xmlParserAttribute) sd_listTakeFirst(element->attributes); } sd_listFree(element->attributes); } os_free(element); } }