Пример #1
0
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);
}
Пример #2
0
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);
    }
}