00001 #ifndef DBXMLSAXHANDLER_H 00002 #define DBXMLSAXHANDLER_H 00003 00004 #include "Folder.hpp" 00005 #include "Bookmark.hpp" 00006 00007 #include <stack> 00008 #include <sax2/DefaultHandler.hpp> 00009 #include <sax2/Attributes.hpp> 00010 00014 class DbXMLSaxHandler : public DefaultHandler { 00015 public: 00019 DbXMLSaxHandler(); 00020 00025 void startElement( 00026 const XMLCh* const uri, 00027 const XMLCh* const localname, 00028 const XMLCh* const qname, 00029 const Attributes& attrs 00030 ); 00031 00035 void endElement( 00036 const XMLCh* const uri, 00037 const XMLCh* const localname, 00038 const XMLCh* const qname 00039 ); 00040 00045 void characters( 00046 const XMLCh* const chars, 00047 const unsigned int length); 00048 00052 void resetDocument(); 00053 00059 Folder* getRoot(); 00060 00061 private: 00067 void set_attribute(Node* node, const string& name, const string& value); 00073 void set_attribute(Bookmark* node, const string& name, const string& value); 00074 00078 Folder* _root; 00079 00084 Folder* _curr_folder; 00085 00091 stack<Folder*> _folders; 00092 00097 Node* _curr_item; 00098 00104 string _current_attr_name; 00105 }; 00106 00107 #endif