00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _OASYS_EXPAT_XML_PARSER_H_
00018 #define _OASYS_EXPAT_XML_PARSER_H_
00019
00020 #include "config.h"
00021
00022 #ifdef LIBEXPAT_ENABLED
00023
00024 #include <expat.h>
00025 #include "XMLParser.h"
00026 #include "debug/Logger.h"
00027
00028 namespace oasys {
00029
00030 class XMLDocument;
00031 class XMLObject;
00032
00033 class ExpatXMLParser : public XMLParser, public Logger {
00034 public:
00036 ExpatXMLParser(const char* logpath);
00037
00039 virtual ~ExpatXMLParser();
00040
00042 bool parse(XMLDocument* doc, const std::string& data);
00043
00044 private:
00046 static void XMLCALL start_element(void* data,
00047 const char* element,
00048 const char** attr);
00049
00050 static void XMLCALL end_element(void* data,
00051 const char* element);
00052
00053 static void XMLCALL character_data(void* data,
00054 const XML_Char* s,
00055 int len);
00057
00058 XMLDocument* doc_;
00059 XMLObject* cur_;
00060 };
00061
00062 }
00063
00064 #endif
00065 #endif