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
00027
00028
00029
00030
00031 #include "skElement.h"
00032 #include <expat.h>
00033 #include "skExecutableContext.h"
00034
00035 class CLASSEXPORT skInputSource;
00036
00041 class CLASSEXPORT skExpatParser
00042 {
00043 public:
00045 skExpatParser();
00046 ~skExpatParser();
00047
00048 skElement * parse(skInputSource& in,skExecutableContext& context);
00049 private:
00051 skExpatParser(const skExpatParser&);
00052 skExpatParser& operator=(const skExpatParser&);
00053
00054 static void startElementHandler(void * userData,const Char *name, const Char **atts);
00055 void startElement(const Char *name, const Char **atts);
00056
00057 static void endElementHandler(void * userData,const Char *name);
00058 void endElement(const Char *name);
00059
00060 static void characterDataHandler(void *userData, const XML_Char *s,int len);
00061 void characterData(const XML_Char *s,int len);
00062
00063 static void startCDataHandler(void *userData);
00064 void startCData();
00065
00066 static void endCDataHandler(void *userData);
00067 void endCData ();
00068
00069 skNodeList m_ElementStack;
00070 bool m_InCData;
00071 skElement * m_RootElement;
00072 };
00073 #endif
00074