Viadeo Twitter Google Bookmarks ! Facebook Digg del.icio.us MySpace Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks Windows Live Favorites 
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

QXmlSimpleReader Class Reference

The QXmlSimpleReader class provides an implementation of a simple XML parser. More...

 #include <QXmlSimpleReader>

Inherits: QXmlReader.

Warning: This class is not reentrant.

Public Functions

QXmlSimpleReader ()
virtual ~QXmlSimpleReader ()
virtual bool parse ( const QXmlInputSource * input, bool incremental )
virtual bool parseContinue ()

Reimplemented Public Functions

virtual QXmlDTDHandler * DTDHandler () const
virtual QXmlContentHandler * contentHandler () const
virtual QXmlDeclHandler * declHandler () const
virtual QXmlEntityResolver * entityResolver () const
virtual QXmlErrorHandler * errorHandler () const
virtual bool feature ( const QString & name, bool * ok = 0 ) const
virtual bool hasFeature ( const QString & name ) const
virtual bool hasProperty ( const QString & name ) const
virtual QXmlLexicalHandler * lexicalHandler () const
virtual bool parse ( const QXmlInputSource & input )
virtual bool parse ( const QXmlInputSource * input )
virtual void * property ( const QString & name, bool * ok = 0 ) const
virtual void setContentHandler ( QXmlContentHandler * handler )
virtual void setDTDHandler ( QXmlDTDHandler * handler )
virtual void setDeclHandler ( QXmlDeclHandler * handler )
virtual void setEntityResolver ( QXmlEntityResolver * handler )
virtual void setErrorHandler ( QXmlErrorHandler * handler )
virtual void setFeature ( const QString & name, bool enable )
virtual void setLexicalHandler ( QXmlLexicalHandler * handler )
virtual void setProperty ( const QString & name, void * value )

Detailed Description

The QXmlSimpleReader class provides an implementation of a simple XML parser.

This XML reader is suitable for a wide range of applications. It is able to parse well-formed XML and can report the namespaces of elements to a content handler; however, it does not parse any external entities. For historical reasons, Attribute Value Normalization and End-of-Line Handling as described in the XML 1.0 specification is not performed.

The easiest pattern of use for this class is to create a reader instance, define an input source, specify the handlers to be used by the reader, and parse the data.

For example, we could use a QFile to supply the input. Here, we create a reader, and define an input source to be used by the reader:

     QXmlSimpleReader xmlReader;
     QXmlInputSource *source = new QXmlInputSource(file);

A handler lets us perform actions when the reader encounters certain types of content, or if errors in the input are found. The reader must be told which handler to use for each type of event. For many common applications, we can create a custom handler by subclassing QXmlDefaultHandler, and use this to handle both error and content events:

     Handler *handler = new Handler;
     xmlReader.setContentHandler(handler);
     xmlReader.setErrorHandler(handler);

If you don't set at least the content and error handlers, the parser will fall back on its default behavior---and will do nothing.

The most convenient way to handle the input is to read it in a single pass using the parse() function with an argument that specifies the input source:

     bool ok = xmlReader.parse(source);

     if (!ok)
         std::cout << "Parsing failed." << std::endl;

If you can't parse the entire input in one go (for example, it is huge, or is being delivered over a network connection), data can be fed to the parser in pieces. This is achieved by telling parse() to work incrementally, and making subsequent calls to the parseContinue() function, until all the data has been processed.

A common way to perform incremental parsing is to connect the readyRead() signal of a network reply a slot, and handle the incoming data there. See QNetworkAccessManager.

Aspects of the parsing behavior can be adapted using setFeature() and setProperty().

 xmlReader.setFeature("http://xml.org/sax/features/namespace-prefixes", true);

QXmlSimpleReader is not reentrant. If you want to use the class in threaded code, lock the code using QXmlSimpleReader with a locking mechanism, such as a QMutex.

Member Function Documentation

QXmlSimpleReader::QXmlSimpleReader ()

Constructs a simple XML reader.

QXmlSimpleReader::~QXmlSimpleReader () [virtual]

Destroys the simple XML reader.

QXmlDTDHandler * QXmlSimpleReader::DTDHandler () const [virtual]

Reimplemented from QXmlReader::DTDHandler().

See also setDTDHandler().

QXmlContentHandler * QXmlSimpleReader::contentHandler () const [virtual]

Reimplemented from QXmlReader::contentHandler().

See also setContentHandler().

QXmlDeclHandler * QXmlSimpleReader::declHandler () const [virtual]

Reimplemented from QXmlReader::declHandler().

See also setDeclHandler().

QXmlEntityResolver * QXmlSimpleReader::entityResolver () const [virtual]

Reimplemented from QXmlReader::entityResolver().

See also setEntityResolver().

QXmlErrorHandler * QXmlSimpleReader::errorHandler () const [virtual]

Reimplemented from QXmlReader::errorHandler().

See also setErrorHandler().

bool QXmlSimpleReader::feature ( const QString & name, bool * ok = 0 ) const [virtual]

Reimplemented from QXmlReader::feature().

See also setFeature().

bool QXmlSimpleReader::hasFeature ( const QString & name ) const [virtual]

Reimplemented from QXmlReader::hasFeature().

bool QXmlSimpleReader::hasProperty ( const QString & name ) const [virtual]

Reimplemented from QXmlReader::hasProperty().

QXmlLexicalHandler * QXmlSimpleReader::lexicalHandler () const [virtual]

Reimplemented from QXmlReader::lexicalHandler().

See also setLexicalHandler().

bool QXmlSimpleReader::parse ( const QXmlInputSource & input ) [virtual]

Reimplemented from QXmlReader::parse().

bool QXmlSimpleReader::parse ( const QXmlInputSource * input ) [virtual]

Reimplemented from QXmlReader::parse().

Reads an XML document from input and parses it in one pass (non-incrementally). Returns true if the parsing was successful; otherwise returns false.

bool QXmlSimpleReader::parse ( const QXmlInputSource * input, bool incremental ) [virtual]

Reads an XML document from input and parses it. Returns true if the parsing is completed successfully; otherwise returns false, indicating that an error occurred.

If incremental is false, this function will return false if the XML file is not read completely. The parsing cannot be continued in this case.

If incremental is true, the parser does not return false if it reaches the end of the input before reaching the end of the XML file. Instead, it stores the state of the parser so that parsing can be continued later when more data is available. In such a case, you can use the function parseContinue() to continue with parsing. This class stores a pointer to the input source input and the parseContinue() function tries to read from that input source. Therefore, you should not delete the input source input until you no longer need to call parseContinue().

If this function is called with incremental set to true while an incremental parse is in progress, a new parsing session will be started, and the previous session will be lost.

See also parseContinue() and QTcpSocket.

bool QXmlSimpleReader::parseContinue () [virtual]

Continues incremental parsing, taking input from the QXmlInputSource that was specified with the most recent call to parse(). To use this function, you must have called parse() with the incremental argument set to true.

Returns false if a parsing error occurs; otherwise returns true, even if the end of the XML file has not been reached. You can continue parsing at a later stage by calling this function again when there is more data available to parse.

Calling this function when there is no data available in the input source indicates to the reader that the end of the XML file has been reached. If the input supplied up to this point was not well-formed then a parsing error occurs, and false is returned. If the input supplied was well-formed, true is returned. It is important to end the input in this way because it allows you to reuse the reader to parse other XML files.

Calling this function after the end of file has been reached, but without available data will cause false to be returned whether the previous input was well-formed or not.

See also parse(), QXmlInputSource::data(), and QXmlInputSource::next().

void * QXmlSimpleReader::property ( const QString & name, bool * ok = 0 ) const [virtual]

Reimplemented from QXmlReader::property().

See also setProperty().

void QXmlSimpleReader::setContentHandler ( QXmlContentHandler * handler ) [virtual]

Reimplemented from QXmlReader::setContentHandler().

See also contentHandler().

void QXmlSimpleReader::setDTDHandler ( QXmlDTDHandler * handler ) [virtual]

Reimplemented from QXmlReader::setDTDHandler().

void QXmlSimpleReader::setDeclHandler ( QXmlDeclHandler * handler ) [virtual]

Reimplemented from QXmlReader::setDeclHandler().

See also declHandler().

void QXmlSimpleReader::setEntityResolver ( QXmlEntityResolver * handler ) [virtual]

Reimplemented from QXmlReader::setEntityResolver().

See also entityResolver().

void QXmlSimpleReader::setErrorHandler ( QXmlErrorHandler * handler ) [virtual]

Reimplemented from QXmlReader::setErrorHandler().

See also errorHandler().

void QXmlSimpleReader::setFeature ( const QString & name, bool enable ) [virtual]

Reimplemented from QXmlReader::setFeature().

Turns on the feature name if enable is true; otherwise turns it off.

The name parameter must be one of the following strings:

FeatureDefaultNotes
http://xml.org/sax/features/namespacestrueIf enabled, namespaces are reported to the content handler.
http://xml.org/sax/features/namespace-prefixesfalseIf enabled, the original prefixed names and attributes used for namespace declarations are reported.
http://trolltech.com/xml/features/report-whitespace-only-CharDatatrueIf enabled, CharData that consist of only whitespace characters are reported using QXmlContentHandler::characters(). If disabled, whitespace is silently discarded.
http://trolltech.com/xml/features/report-start-end-entityfalseIf enabled, the parser reports QXmlContentHandler::startEntity() and QXmlContentHandler::endEntity() events, so character data might be reported in chunks. If disabled, the parser does not report these events, but silently substitutes the entities, and reports the character data in one chunk.

See also feature(), hasFeature(), and SAX2 Features.

void QXmlSimpleReader::setLexicalHandler ( QXmlLexicalHandler * handler ) [virtual]

Reimplemented from QXmlReader::setLexicalHandler().

See also lexicalHandler().

void QXmlSimpleReader::setProperty ( const QString & name, void * value ) [virtual]

Reimplemented from QXmlReader::setProperty().

See also property().

Publicité

Best Of

Actualités les plus lues

Semaine
Mois
Année
  1. Microsoft ouvre aux autres compilateurs C++ AMP, la spécification pour la conception d'applications parallèles C++ utilisant le GPU 22
  2. Les développeurs ignorent-ils trop les failles découvertes dans leur code ? Prenez-vous en compte les remarques des autres ? 17
  3. RIM : « 13 % des développeurs ont gagné plus de 100 000 $ sur l'AppWord », Qt et open-source au menu du BlackBerry DevCon Europe 0
  4. « Quelque chose ne va vraiment pas avec les développeurs "modernes" », un développeur à "l'ancienne" critique la multiplication des bibliothèques 12
  5. BlackBerry 10 : premières images du prochain OS de RIM qui devrait intégrer des widgets et des tuiles inspirées de Windows Phone 0
  6. Adieu qmake, bienvenue qbs : Qt Building Suite, un outil déclaratif et extensible pour la compilation de projets Qt 17
  7. Quelles nouveautés de C++11 Visual C++ doit-il rapidement intégrer ? Donnez-nous votre avis 10
Page suivante

Le Qt Developer Network au hasard

Logo

Compiler l'add-in Qt de Visual Studio

Le Qt Developer Network est un réseau de développeurs Qt anglophone, où ils peuvent partager leur expérience sur le framework. Lire l'article.

Communauté

Ressources

Liens utiles

Contact

  • Vous souhaitez rejoindre la rédaction ou proposer un tutoriel, une traduction, une question... ? Postez dans le forum Contribuez ou contactez-nous par MP ou par email (voir en bas de page).

Qt dans le magazine

Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt 4.7
Copyright © 2012 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur ? Un bug ? Une redirection cassée ? Ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !
 
 
 
 
Partenaires

Hébergement Web