#include "textwolf.hpp" #include "textwolf/istreamiterator.hpp" #include #include using namespace std; using namespace textwolf; int main( int argc, char *argv[] ) { if( argc != 2 ) { cerr << "Usage: test1 \n" << endl; return 1; } char *xmlFileName = argv[1]; ifstream xmlFile( xmlFileName ); if( !xmlFile.good( ) ) { cerr << "ERROR: Can't open file '" << xmlFileName << "'" << endl; return 1; } IStreamIterator isitr( xmlFile ); typedef XMLScanner Scanner; Scanner xs( isitr ); std::string currentTag; for( Scanner::iterator itr = xs.begin( ); itr != xs.end( ); itr++ ) { switch( itr->type( ) ) { case Scanner::OpenTag: currentTag = itr->content( ); break; case Scanner::Content: if( currentTag == "loc" ) { cout << itr->content( ) << endl; } break; case Scanner::CloseTag: currentTag.clear( ); break; case Scanner::ErrorOccurred: throw runtime_error( itr->content( ) ); case Scanner::None: case Scanner::HeaderStart: case Scanner::HeaderAttribName: case Scanner::HeaderAttribValue: case Scanner::HeaderEnd: case Scanner::DocAttribValue: case Scanner::DocAttribEnd: case Scanner::TagAttribName: case Scanner::TagAttribValue: case Scanner::CloseTagIm: case Scanner::Exit: default: break; } } }