00001 #ifndef STRUCTUREHANDLER_H
00002 #define STRUCTUREHANDLER_H
00003
00004 #include <xercesc/util/XercesDefs.hpp>
00005 #include <xercesc/sax2/Attributes.hpp>
00006 #include <string>
00007 #include <xml/XMLConstantNode.h>
00008
00009 XERCES_CPP_NAMESPACE_USE;
00010
00016 class StructureHandler
00017 {
00018
00019 public:
00021 StructureHandler();
00022
00024 virtual ~StructureHandler();
00025
00035 virtual StructureHandler* startChild(const XMLCh* const lname, const Attributes& attrs) = 0;
00036
00043 virtual void endDirectChild(const XMLCh* const lname, const std::string& content) = 0;
00044
00050 virtual void endElement(const XMLCh* const lname, const XMLCh* const content) = 0;
00051
00057 virtual void endStructureChild(const XMLCh* const lname, const StructureHandler* pHandler) = 0;
00058
00064 virtual void startElement(const XMLCh* const localname, const Attributes& atts) = 0;
00065
00069 virtual void* getData() { return m_pData; }
00070
00073 virtual const void* getData() const { return m_pData; }
00074
00077 virtual void setData(void* data) { m_pData = data; }
00078
00079 private:
00081 void* m_pData;
00082
00083 };
00084
00085 #endif