00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef skEXPATPARSER_H
00023 #define skEXPATPARSER_H
00024
00025 #include "skString.h"
00026 #include "skElement.h"
00027 #include <expat.h>
00028 #include "skExecutableContext.h"
00029
00030 class CLASSEXPORT skInputSource;
00031
00036 class CLASSEXPORT skExpatParser
00037 #ifdef __SYMBIAN32__
00038 : public CBase
00039 #endif
00040 {
00041 public:
00043 IMPORT_C skExpatParser();
00045 IMPORT_C virtual ~skExpatParser();
00053 IMPORT_C skElement * parse(skInputSource& in,skExecutableContext& context);
00054 private:
00056 skExpatParser(const skExpatParser&);
00057 skExpatParser& operator=(const skExpatParser&);
00058
00059 static void startElementHandler(void * userData,const Char *name, const Char **atts);
00060 void startElement(const Char *name, const Char **atts);
00061
00062 static void endElementHandler(void * userData,const Char *name);
00063 void endElement(const Char *name);
00064
00065 static void characterDataHandler(void *userData, const XML_Char *s,int len);
00066 void characterData(const XML_Char *s,int len);
00067
00068 static void startCDataHandler(void *userData);
00069 void startCData();
00070
00071 static void endCDataHandler(void *userData);
00072 void endCData ();
00073
00074 skNodeList m_ElementStack;
00075 bool m_InCData;
00076 skElement * m_RootElement;
00077 };
00078 #endif
00079