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 {
00038 public:
00040 skExpatParser();
00041 ~skExpatParser();
00042
00043 skElement * parse(skInputSource& in,skExecutableContext& context);
00044 private:
00046 skExpatParser(const skExpatParser&);
00047 skExpatParser& operator=(const skExpatParser&);
00048
00049 static void startElementHandler(void * userData,const Char *name, const Char **atts);
00050 void startElement(const Char *name, const Char **atts);
00051
00052 static void endElementHandler(void * userData,const Char *name);
00053 void endElement(const Char *name);
00054
00055 static void characterDataHandler(void *userData, const XML_Char *s,int len);
00056 void characterData(const XML_Char *s,int len);
00057
00058 static void startCDataHandler(void *userData);
00059 void startCData();
00060
00061 static void endCDataHandler(void *userData);
00062 void endCData ();
00063
00064 skNodeList m_ElementStack;
00065 bool m_InCData;
00066 skElement * m_RootElement;
00067 };
00068 #endif
00069