machine à états avec un parser SAX Xerces
Salut,
Bon voila je parse en SAX avec xerces et pour pouvoir traiter les données reçu je veux faire une machine à état. En gros mon handler xerces ressemble à ceci:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
void startElement(const XMLCh* const name,AttributeList& attributes)
{
char* message = XMLString::transcode(name);
switch(state)
{
case MESSAGE:
if(strcmp(message,"message")==0)
state = FRAME;
break;
case FRAME:
Frame = message;
state = DATA;
break;
case DATA:
Data = message;
state = SAMPLE;
break;
}
XMLString::release(&message);
}
void characters(const XMLCh *const chars,const XMLSize_t length)
{
char* message = XMLString::transcode(chars);
switch(state)
{
case SAMPLE:
/*
...
*/
state = DATA;
break;
}
XMLString::release(&message);
}
void endElement(const XMLCh* name)
{
char* message = XMLString::transcode(name);
switch(state)
{
case FRAME:
if(strcmp(message,"message")==0)
state = MESSAGE;
break;
case DATA:
if(strcmp(message,Frame)==0)
state = FRAME;
break;
}
XMLString::release(&message);
} |
Le problème ce sont les variables "Frame" et "Data" . Lorsque j'essaye de récupérer leur valeur, parfois j'ai ce que j'ai mis dedans et souvent j'obtiens des trucs du style: )>, ÏÊ ...
Si quelqu'un avait un début de réponse ça m'aiderai pas mal;)