Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |
This example presents a small SAX2 reader that outputs the names of all elements in an XML document on the command line. The element names are indented corresponding to their nesting
This example is thoroughly explained in a walkthrough.
Header file:
/**************************************************************************** ** $Id: qt/structureparser.h 3.2.0b2 edited May 13 09:08 $ ** ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. ** ** This file is part of an example program for Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #ifndef STRUCTUREPARSER_H #define STRUCTUREPARSER_H #include <qxml.h> class QString; class StructureParser : public QXmlDefaultHandler { public: bool startDocument(); bool startElement( const QString&, const QString&, const QString& , const QXmlAttributes& ); bool endElement( const QString&, const QString&, const QString& ); private: QString indent; }; #endif
Implementation:
/**************************************************************************** ** $Id: qt/structureparser.cpp 3.2.0b2 edited Jun 12 17:58 $ ** ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. ** ** This file is part of an example program for Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #include "structureparser.h" #include <stdio.h> #include <qstring.h> bool StructureParser::startDocument() { indent = ""; return TRUE; } bool StructureParser::startElement( const QString&, const QString&, const QString& qName, const QXmlAttributes& ) { printf( "%s%s\n", (const char*)indent, (const char*)qName ); indent += " "; return TRUE; } bool StructureParser::endElement( const QString&, const QString&, const QString& ) { indent.remove( (uint)0, 4 ); return TRUE; }
Main:
/**************************************************************************** ** $Id: qt/tagreader.cpp 3.2.0b2 edited May 13 09:08 $ ** ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. ** ** This file is part of an example program for Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #include "structureparser.h" #include <qfile.h> #include <qxml.h> #include <qwindowdefs.h> int main( int argc, char **argv ) { if ( argc < 2 ) { fprintf( stderr, "Usage: %s <xmlfile>\n", argv[0] ); return 1; } for ( int i=1; i < argc; i++ ) { StructureParser handler; QFile xmlFile( argv[i] ); QXmlInputSource source( &xmlFile ); QXmlSimpleReader reader; reader.setContentHandler( &handler ); reader.parse( source ); } return 0; }
See also Qt XML Examples.
Copyright © 2003 Trolltech | Trademarks | Qt version 3.2.0b2
|