#include #include #include #include "gsdlunicode.h" #if defined(GSDL_USE_OBJECTSPACE) # include #elif defined(GSDL_USE_IOS_H) # include #else # include using namespace std; #endif #include "queryinfo.h" #include "expat_document.h" #include "text_t.h" #include "fileutil.h" #include "expat_resultset.h" struct resultpack { text_t *current_text; text_t *section_num; text_t *section_level; bool store_text; }; static void XMLCALL startElement(void *userData, const char *name, const char **attributes) { resultpack * rpack_ptr = (resultpack*)userData; text_t element_name = (char*)name; if (element_name == *(rpack_ptr->section_level)) { text_t id_att = (char *)get_attribute(attributes,"gs2:docOID"); if (id_att == *(rpack_ptr->section_num)) { rpack_ptr->store_text = true; } } } static void XMLCALL endElement(void *userData, const char *name) { resultpack * rpack_ptr = (resultpack*)userData; text_t element_name = (char*)name; if (element_name == *(rpack_ptr->section_level)) { if (rpack_ptr->store_text == true) { // we have finished now, can we quit this?? rpack_ptr->store_text = false; } } } static void XMLCALL characterData(void *userData, const char * text, int len) { resultpack * rpack_ptr = (resultpack*)userData; if (rpack_ptr->store_text) { rpack_ptr->current_text->appendcarr(text, len); } } int expat_document(const text_t &filename, const text_t &sec_level, const text_t &sec_num, text_t & doc_content) { text_t current_text; current_text.clear(); text_t section_num = sec_num; text_t section_level = sec_level; resultpack rpack = { ¤t_text, §ion_num, §ion_level, false}; //cerr << "sec num = "<