At 06.11 18/12/2006 -0800, appleGuy wrote:

Ok, ive found it in my library.

Could you please do me a massive favour & show a step by step of your
process. To be honest im not totally understanding your logic to achieve my
goal. Also because its not documented its harder to impliment.

Disclaimer: it's a totally untested code...

#include <xercesc/util/StringPool.hpp>

class myHandler : public DocumentHandler
{
[...]
    virtual void startDocument();
    virtual void startElement
    (
        const   XMLCh* const    name
        ,       AttributeList&  attrs
    );

protected:
  XMLStringPool _map;
};

void myHandler::startDocument()
{
  _map.flushAll();
  _map.addOrFind(L"loopcardprj");       // id = 1
  _map.addOrFind(L"_prjsetup"); // id = 2
  _map.addOrFind(L"title");     // id = 3
  _map.addOrFind(L"author");    // id = 4
  _map.addOrFind(L"subject");   // id = 5
  _map.addOrFind(L"card");      // id = 6
  _map.addOrFind(L"_questions");        // id = 7
  _map.addOrFind(L"question");  // id = 8
  _map.addOrFind(L"q"); // id = 9
  _map.addOrFind(L"a"); // id = 10
  _map.addOrFind(L"comment");   // id = 11
}

void myHandler::startElement(const XMLCh* const name, AttributeList&  attrs)
{
  switch(_map.getId(name))
  {
    // place the code in the corresponding 'case' branch...
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
  }
}

Alberto


Many Thanks Alberto

-Alex


Alberto Massari wrote:
>
> At 04.41 18/12/2006 -0800, appleGuy wrote:
>
>>Ok,
>>
>>I cant seem to see XMLStringPool in the docs, there is a
>>XMLSyncronisedStringPool...
>
> I guess it was treated as an internal helper class, as it is
> explicitly removed from the doc generation step (while
> XMLSyncronisedStringPool is a more recent class that escaped the
> check...). You can use XMLSyncronisedStringPool (that derives from
> XMLStringPool), or just include xercesc/util/StringPool.hpp and use
> XMLStringPool...
>
> Alberto
>
>>???
>>
>>-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.
>
>
>

--
View this message in context: http://www.nabble.com/Parsing-Using-SAX-tf2835675.html#a7929328
Sent from the Xerces - C - Users mailing list archive at Nabble.com.

Reply via email to