|
Re: Parsing Using SAX: msg#00057text.xml.xerces-c.user
Ok, I cant seem to see XMLStringPool in the docs, there is a XMLSyncronisedStringPool... ??? -Alex Alberto Massari wrote: > > At 15.05 17/12/2006 -0800, appleGuy wrote: > >>Hi, >> >>Ive been getting there with this Sax buisness... >> >>Now my handler class is on the way (the problem I had earlier is sorted) >> >>However How do I make comparisons efficently using SAX...I mean when it get >>the tag, i need to compare it & find the right variable to assign the >>character data too (the data between the tags) > > I would add to my handler class an instance of type XMLStringPool, > initialize it by adding to it the names I am interested in (using > addOrFind), then use getId to convert the node name into one of these > known ids. > > Alberto > > >>Cheers >>Alex >> >> >>appleGuy wrote: >> > >> > Ok, >> > >> > Im going to include my code for this problem. >> > I get an error when the parse function is called: >> > parser->parse(XMLfile)....Ive got no idea why >> > >> > Also this was formed from the SaxCount Code included with the Xerces >> > distro. >> > >> > Currently I dont see it doing anything. I need to be able to change >> > variable & containers in the DocumentHandler Class >> > >> > Cheers >> > Alex >> > >> > >> > bool prjLoad::loadXML_prj(char *prj_filename){ >> > //Start XML Xerces Framework >> > try { >> > XMLPlatformUtils::Initialize(); >> > } >> > catch (const XMLException& toCatch) { >> > char* message = XMLString::transcode(toCatch.getMessage()); >> > cout << "Error during initialization! :\n" >> > << message << "\n"; >> > XMLString::release(&message); >> > return false; >> > } >> > >> > //Create New Parser (SAX) >> > SAXParser* parser = new SAXParser(); >> > >> > //File Input Validation >> > parser->setDoValidation(true); >> > parser->setDoNamespaces(true); >> > >> > //Create our SAX handler object and install it on >> the parser (Doc & >> > Error Handler) >> > //Using Project as Handler >> > parser->setDocumentHandler(prj); >> > parser->setErrorHandler(prj); >> > >> > //Load File through Xerces >> > XERCES_STD_QUALIFIER ifstream xmlFileHandle; >> > xmlFileHandle.open(prj_filename); >> > >> > //Load Each Line From File To Array xmlFile >> > bool flag = true; >> > while (flag == true) >> > { >> > char token[1000]; >> > //Set array to zeros >> > memset(token,0,sizeof(token)); >> > >> > //Sequential Search >> > if(!(xmlFileHandle.eof())){ >> > xmlFileHandle.getline(token, sizeof(token)); >> > >> > //Check If Line Contains Anything >> > if(!(token)) >> > continue; >> > else { >> > //Load into New Derived Variable >> for overloading & Safety >> > const char *XMLfile = token; >> > >> > //Debug >> > cout << "Parsing: " << XMLfile << endl; >> > >> > //ERROR WIPE -> NEEDS IMPLIMENTING >> > >> > try { >> > parser->parse(XMLfile); >> > } >> > catch(int debug /*Use Exception in >> class*/){ >> > cout << "ERROR OCCURED" << endl; >> > } >> > >> > } >> > >> > >> > } >> > //ELSE STATEMENT FOR EOF-> Set Flag to false >> therefore exiting while >> > loop >> > else >> > flag = false; >> > >> > >> > } >> > >> > return true; >> > } >> > >> > >> > appleGuy wrote: >> >> >> >> Its Ok, >> >> >> >> I needed to inheirt from the handlerbase class >> >> >> >> >> >> Cheers >> >> ALEX >> >> >> >> >> >> >> >> appleGuy wrote: >> >>> >> >>> Hi, >> >>> >> >>> Ive finally started to get going using Sax. Now im using the Samples >> to >> >>> help coding my own project. >> >>> >> >>> Looking at Sax Count, they seem to have created their own handler >> class >> >>> (saxcounthandler): >> >>> >> >>> SAXCountHandlers handler; >> >>> parser->setDocumentHandler(&handler); >> >>> parser->setErrorHandler(&handler); >> >>> >> >>> How can they do this as The type needed in setDocumentHandler needs >> to >> >>> be type DocumentHandler. >> >>> >> >>> When I try to use my custom class as a handler, it gives an >> error...what >> >>> is special about the SaxCountHandlers..? >> >>> >> >>> Ive used pointers,. they have dereferenced an object, surely im doing >> >>> the same thing? >> >>> >> >>> Many Thanks >> >>> Alex >> >>> >> >>> p.s: Also by DocumentHandler, what does this do exactly. Im thinking >> its >> >>> the controller for the parsing. I.e you can use the parsed data to >> >>> modify the handler and visa-versa >> >>> >> >>> >> >>> >> >>> >> >>> >> >> >> >> >> > >> > >> >>-- >>View this message in context: >>http://www.nabble.com/Parsing-Using-SAX-tf2835675.html#a7921219 >>Sent from the Xerces - C - Users mailing list archive at Nabble.com. > > > -- View this message in context: http://www.nabble.com/Parsing-Using-SAX-tf2835675.html#a7928122 Sent from the Xerces - C - Users mailing list archive at Nabble.com. |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: Parsing Using SAX: 00057, Alberto Massari |
|---|---|
| Next by Date: | Re: Parsing Using SAX: 00057, Alberto Massari |
| Previous by Thread: | Re: Parsing Using SAXi: 00057, Alberto Massari |
| Next by Thread: | Re: Parsing Using SAX: 00057, Alberto Massari |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |