#ifndef __HTML_PARSER_SAX_H__ #define __HTML_PARSER_SAX_H__ #include #include "Node.h" namespace htmlcxx { namespace HTML { class ParserSax { public: ParserSax() : mpLiteral(0), mCdata(false) {} virtual ~ParserSax() {} /** Parse the html code */ void parse(const std::string &html); template void parse(_Iterator begin, _Iterator end); protected: // Redefine this if you want to do some initialization before // the parsing virtual void beginParsing() {} virtual void foundTag(Node node, bool isEnd) {} virtual void foundText(Node node) {} virtual void foundComment(Node node) {} virtual void endParsing() {} template void parse(_Iterator &begin, _Iterator &end, std::forward_iterator_tag); template void parseHtmlTag(_Iterator b, _Iterator c); template void parseContent(_Iterator b, _Iterator c); template void parseComment(_Iterator b, _Iterator c); template _Iterator skipHtmlTag(_Iterator ptr, _Iterator end); template _Iterator skipHtmlComment(_Iterator ptr, _Iterator end); unsigned long mCurrentOffset; const char *mpLiteral; bool mCdata; }; }//namespace HTML }//namespace htmlcxx #include "ParserSax.tcc" #endif