bool LibXMLParser::parse(const std::string& data) { if (xmlParseChunk(context_, data.c_str(), data.size(), false) == XML_ERR_OK) { return true; } xmlError* error = xmlCtxtGetLastError(context_); if (error->code == XML_WAR_NS_URI || error->code == XML_WAR_NS_URI_RELATIVE) { xmlCtxtResetLastError(context_); context_->errNo = XML_ERR_OK; return true; } return false; }
void SaxParser::finish_chunk_parsing() { xmlResetLastError(); if(!context_) { context_ = xmlCreatePushParserCtxt( sax_handler_.get(), 0, // this, // user_data 0, // chunk 0, // size 0); // no filename for fetching external entities if(!context_) { throw internal_error("Could not create parser context\n" + format_xml_error()); } initialize_context(); } else xmlCtxtResetLastError(context_); int parseError = XML_ERR_OK; if(!exception_) //This is called just to terminate parsing. parseError = xmlParseChunk(context_, 0 /* chunk */, 0 /* size */, 1 /* terminate (1 or 0) */); Glib::ustring error_str = format_xml_parser_error(context_); if (error_str.empty() && parseError != XML_ERR_OK) error_str = "Error code from xmlParseChunk(): " + Glib::ustring::format(parseError); release_underlying(); // Free context_ check_for_exception(); if(!error_str.empty()) { throw parse_error(error_str); } }
void SaxParser::parse_chunk_raw(const unsigned char* contents, size_type bytes_count) { KeepBlanks k(KeepBlanks::Default); xmlResetLastError(); if(!context_) { context_ = xmlCreatePushParserCtxt( sax_handler_.get(), 0, // user_data 0, // chunk 0, // size 0); // no filename for fetching external entities if(!context_) { throw internal_error("Could not create parser context\n" + format_xml_error()); } initialize_context(); } else xmlCtxtResetLastError(context_); int parseError = XML_ERR_OK; if(!exception_) parseError = xmlParseChunk(context_, (const char*)contents, bytes_count, 0 /* don't terminate */); check_for_exception(); Glib::ustring error_str = format_xml_parser_error(context_); if (error_str.empty() && parseError != XML_ERR_OK) error_str = "Error code from xmlParseChunk(): " + Glib::ustring::format(parseError); if(!error_str.empty()) { throw parse_error(error_str); } }
/** * gxml_context_reset_last_error: * * Deprecated: 0.15 */ void gxml_context_reset_last_error (void* ctx) { xmlCtxtResetLastError (ctx); }