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 IMPORT_C skElement * parse(skInputSource& in,skExecutableContext& context,skString encoding);
00055 private:
00057 skExpatParser(const skExpatParser&);
00058 skExpatParser& operator=(const skExpatParser&);
00059
00060 static void startElementHandler(void * userData,const Char *name, const Char **atts);
00061 void startElement(const Char *name, const Char **atts);
00062
00063 static void endElementHandler(void * userData,const Char *name);
00064 void endElement(const Char *name);
00065
00066 static void characterDataHandler(void *userData, const XML_Char *s,int len);
00067 void characterData(const XML_Char *s,int len);
00068
00069 static void startCDataHandler(void *userData);
00070 void startCData();
00071
00072 static void endCDataHandler(void *userData);
00073 void endCData ();
00074
00075 skNodeList m_ElementStack;
00076 bool m_InCData;
00077 skElement * m_RootElement;
00078 };
00079 #endif
00080