00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __SAXPARSER_H
00019 #define __SAXPARSER_H
00020
00021 #include <stdio.h>
00022 #include "nedxmldefs.h"
00023
00024 NAMESPACE_BEGIN
00025
00026 class SAXParser;
00027
00028
00039 class NEDXML_API SAXHandler
00040 {
00041 friend class SAXParser;
00042 protected:
00043 SAXParser *parser;
00044
00045
00046 virtual void setParser(SAXParser *p) {parser=p;}
00047
00048 public:
00052 SAXHandler() {parser=0;}
00053
00057 virtual ~SAXHandler() {}
00058
00062 virtual void startElement(const char *name, const char **atts) {}
00063
00067 virtual void endElement(const char *name) {}
00068
00072 virtual void characterData(const char *s, int len) {}
00073
00077 virtual void processingInstruction(const char *target, const char *data) {}
00078
00082 virtual void comment(const char *data) {}
00083
00087 virtual void startCdataSection() {}
00088
00092 virtual void endCdataSection() {}
00093 };
00094
00095
00104 class NEDXML_API SAXParser
00105 {
00106 protected:
00107 char errortext[512];
00108 SAXHandler *saxhandler;
00109 void *currentparser;
00110
00111 protected:
00112
00113 bool doParse(const char *filename, const char *content);
00114
00115 public:
00119 SAXParser();
00120
00124 void setHandler(SAXHandler *sh);
00125
00132 bool parse(const char *filename);
00133
00140 bool parseContent(const char *content);
00141
00145 int getCurrentLineNumber();
00146
00150 const char *getErrorMessage() {return errortext;}
00151 };
00152
00153 NAMESPACE_END
00154
00155
00156 #endif
00157