#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