#include "htmlparser_cpp.h" #include #include using namespace std; using namespace streamhtmlparser; int main( int argc, char *argv[] ) { if( argc != 2 ) { cerr << "Usage: test1 \n" << endl; return 1; } char *htmlFileName = argv[1]; HtmlParser parser; ifstream htmlFile( htmlFileName ); if( !htmlFile.good( ) ) { cerr << "ERROR: Can't open file '" << htmlFileName << "'" << endl; return 1; } char buf[1] = {0}; while( htmlFile.good( ) && !htmlFile.eof( ) ) { buf[0] = htmlFile.get( ); parser.Parse( buf, 1 ); int state = parser.state( ); switch( state ) { case HtmlParser::STATE_TEXT: cout << "TEXT '" << buf[0] << "'" << " '" << ( ( parser.tag( ) != NULL ) ? parser.tag( ) : "NULL" ) << "'" << " '" << ( ( parser.attribute( ) != NULL ) ? parser.attribute( ) : "NULL" ) << "'" << " '" << ( ( parser.value( ) != NULL ) ? parser.value( ) : "NULL" ) << "'" << endl; break; case HtmlParser::STATE_TAG: cout << "TAG" << " '" << ( ( parser.tag( ) != NULL ) ? parser.tag( ) : "NULL" ) << "'" << " '" << ( ( parser.attribute( ) != NULL ) ? parser.attribute( ) : "NULL" ) << "'" << " '" << ( ( parser.value( ) != NULL ) ? parser.value( ) : "NULL" ) << "'" << endl; break; case HtmlParser::STATE_ATTR: cout << "ATTR" << " '" << ( ( parser.tag( ) != NULL ) ? parser.tag( ) : "NULL" ) << "'" << " '" << ( ( parser.attribute( ) != NULL ) ? parser.attribute( ) : "NULL" ) << "'" << " '" << ( ( parser.value( ) != NULL ) ? parser.value( ) : "NULL" ) << "'" << endl; break; case HtmlParser::STATE_VALUE: cout << "VALUE" << " '" << ( ( parser.tag( ) != NULL ) ? parser.tag( ) : "NULL" ) << "'" << " '" << ( ( parser.attribute( ) != NULL ) ? parser.attribute( ) : "NULL" ) << "'" << " '" << ( ( parser.value( ) != NULL ) ? parser.value( ) : "NULL" ) << "'" << endl; break; case HtmlParser::STATE_ERROR: cerr << endl << "ERROR at " << endl; return 1; default: cout << "UNKNOWN state " << state << endl; } } return 0; }