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.