/** * raptor_free_sax2: * @sax2: SAX2 object * * Destructor - destroy a SAX2 object */ void raptor_free_sax2(raptor_sax2 *sax2) { raptor_xml_element *xml_element; if(!sax2) return; #ifdef RAPTOR_XML_LIBXML if(sax2->xc) { raptor_libxml_free(sax2->xc); sax2->xc = NULL; } #endif while( (xml_element = raptor_xml_element_pop(sax2)) ) raptor_free_xml_element(xml_element); raptor_namespaces_clear(&sax2->namespaces); if(sax2->base_uri) raptor_free_uri(sax2->base_uri); raptor_object_options_clear(&sax2->options); RAPTOR_FREE(raptor_sax2, sax2); }
/** * raptor_sax2_parse_start: * @sax2: sax2 object * @base_uri: base URI * * Start an XML SAX2 parse. */ void raptor_sax2_parse_start(raptor_sax2* sax2, raptor_uri *base_uri) { sax2->depth=0; sax2->root_element=NULL; sax2->current_element=NULL; if(sax2->base_uri) raptor_free_uri_v2(sax2->world, sax2->base_uri); if(base_uri) sax2->base_uri=raptor_uri_copy_v2(sax2->world, base_uri); else sax2->base_uri=NULL; #ifdef RAPTOR_XML_EXPAT if(sax2->xp) { XML_ParserFree(sax2->xp); sax2->xp=NULL; } raptor_expat_init(sax2, base_uri); #endif #ifdef RAPTOR_XML_LIBXML raptor_libxml_init(sax2, base_uri); xmlSetStructuredErrorFunc(&sax2->error_handlers, raptor_libxml_xmlStructuredErrorFunc); #if LIBXML_VERSION < 20425 sax2->first_read=1; #endif if(sax2->xc) { raptor_libxml_free(sax2->xc); sax2->xc=NULL; } #endif raptor_namespaces_clear(&sax2->namespaces); if(raptor_namespaces_init_v2(sax2->world, &sax2->namespaces, (raptor_simple_message_handler)raptor_sax2_simple_error, sax2, 1)) { /* log a fatal error and set sax2 to failed state since the function signature does not currently support returning an error */ raptor_log_error_to_handlers(sax2->world, sax2->error_handlers, RAPTOR_LOG_LEVEL_FATAL, sax2->locator, "raptor_namespaces_init_v2() failed"); sax2->failed = 1; } }
/** * raptor_free_sax2: * @sax2: SAX2 object * * Destructor - destroy a SAX2 object */ void raptor_free_sax2(raptor_sax2 *sax2) { raptor_xml_element *xml_element; RAPTOR_ASSERT_OBJECT_POINTER_RETURN(sax2, raptor_sax2); #ifdef RAPTOR_XML_EXPAT if(sax2->xp) { XML_ParserFree(sax2->xp); sax2->xp=NULL; } #endif #ifdef RAPTOR_XML_LIBXML if(sax2->xc) { raptor_libxml_free(sax2->xc); sax2->xc=NULL; } if(sax2->world->libxml_flags & RAPTOR_LIBXML_FLAGS_STRUCTURED_ERROR_SAVE) xmlSetStructuredErrorFunc(sax2->saved_structured_error_context, sax2->saved_structured_error_handler); if(sax2->world->libxml_flags & RAPTOR_LIBXML_FLAGS_GENERIC_ERROR_SAVE) xmlSetGenericErrorFunc(sax2->saved_generic_error_context, sax2->saved_generic_error_handler); #endif while( (xml_element=raptor_xml_element_pop(sax2)) ) raptor_free_xml_element(xml_element); raptor_namespaces_clear(&sax2->namespaces); if(sax2->base_uri) raptor_free_uri_v2(sax2->world, sax2->base_uri); RAPTOR_FREE(raptor_sax2, sax2); }
/** * raptor_sax2_parse_start: * @sax2: sax2 object * @base_uri: base URI * * Start an XML SAX2 parse. */ void raptor_sax2_parse_start(raptor_sax2* sax2, raptor_uri *base_uri) { sax2->depth = 0; sax2->root_element = NULL; sax2->current_element = NULL; if(sax2->base_uri) raptor_free_uri(sax2->base_uri); if(base_uri) sax2->base_uri = raptor_uri_copy(base_uri); else sax2->base_uri = NULL; #ifdef RAPTOR_XML_LIBXML raptor_libxml_sax_init(sax2); #if LIBXML_VERSION < 20425 sax2->first_read = 1; #endif if(sax2->xc) { raptor_libxml_free(sax2->xc); sax2->xc = NULL; } #endif raptor_namespaces_clear(&sax2->namespaces); if(raptor_namespaces_init(sax2->world, &sax2->namespaces, 1)) { /* log a fatal error and set sax2 to failed state since the function signature does not currently support returning an error */ raptor_log_error(sax2->world, RAPTOR_LOG_LEVEL_FATAL, sax2->locator, "raptor_namespaces_init() failed"); sax2->failed = 1; } }