bool xml_languaget::parse( std::istream &instream, const std::string &path, message_handlert &message_handler) { // store the path parse_path=path; // parsing xml_parser.clear(); xml_parser.filename=path; xml_parser.in=&instream; xml_parser.set_message_handler(message_handler); bool result=yyxmlparse(); // save result xml_parse_tree.swap(xml_parser.parse_tree); // save some memory xml_parser.clear(); return result; }
// 'do it all' function bool parse_xml( std::istream &in, const std::string &filename, message_handlert &message_handler, xmlt &dest) { xml_parser.clear(); xml_parser.location.set_file(filename); xml_parser.in=∈ xml_parser.set_message_handler(message_handler); bool result=yyxmlparse(); // save result xml_parser.parse_tree.element.swap(dest); // save some memory xml_parser.clear(); return result; }