QXmlSimpleReader Class
La classe QXmlSimpleReader fournit une implémentation d'un analyseur XML simple. Plus d'informations...
| En-tête : | #include <QXmlSimpleReader> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core5Compat)target_link_libraries(mytarget PRIVATE Qt6::Core5Compat) |
| qmake : | QT += core5compat |
| Héritages : | QXmlReader |
Avertissement : Cette classe n'est pas réentrante : Cette classe n'est pas réentrante.
Fonctions publiques
| QXmlSimpleReader() | |
| virtual | ~QXmlSimpleReader() |
| virtual bool | parse(const QXmlInputSource *input, bool incremental) |
| virtual bool | parseContinue() |
Fonctions publiques réimplémentées
| virtual QXmlDTDHandler * | DTDHandler() const override |
| virtual QXmlContentHandler * | contentHandler() const override |
| virtual QXmlDeclHandler * | declHandler() const override |
| virtual QXmlEntityResolver * | entityResolver() const override |
| virtual QXmlErrorHandler * | errorHandler() const override |
| virtual bool | feature(const QString &name, bool *ok = nullptr) const override |
| virtual bool | hasFeature(const QString &name) const override |
| virtual bool | hasProperty(const QString &name) const override |
| virtual QXmlLexicalHandler * | lexicalHandler() const override |
| virtual bool | parse(const QXmlInputSource &input) override |
| virtual bool | parse(const QXmlInputSource *input) override |
| virtual void * | property(const QString &name, bool *ok = nullptr) const override |
| virtual void | setContentHandler(QXmlContentHandler *handler) override |
| virtual void | setDTDHandler(QXmlDTDHandler *handler) override |
| virtual void | setDeclHandler(QXmlDeclHandler *handler) override |
| virtual void | setEntityResolver(QXmlEntityResolver *handler) override |
| virtual void | setErrorHandler(QXmlErrorHandler *handler) override |
| virtual void | setFeature(const QString &name, bool enable) override |
| virtual void | setLexicalHandler(QXmlLexicalHandler *handler) override |
| virtual void | setProperty(const QString &name, void *value) override |
Description détaillée
Ce lecteur XML convient à un large éventail d'applications. Il est capable d'analyser du XML bien formé et de signaler les espaces de noms des éléments à un gestionnaire de contenu ; cependant, il n'analyse pas les entités externes. Pour des raisons historiques, la normalisation des valeurs d'attributs et la gestion des fins de ligne décrites dans la spécification XML 1.0 ne sont pas effectuées.
Le modèle d'utilisation le plus simple pour cette classe est de créer une instance de lecteur, de définir une source d'entrée, de spécifier les gestionnaires à utiliser par le lecteur et d'analyser les données.
Par exemple, nous pourrions utiliser un site QFile pour fournir les données d'entrée. Ici, nous créons un lecteur et définissons une source d'entrée à utiliser par le lecteur :
QXmlSimpleReader xmlReader; QXmlInputSource *source = new QXmlInputSource(file);
Un gestionnaire nous permet d'effectuer des actions lorsque le lecteur rencontre certains types de contenu ou si des erreurs sont détectées dans l'entrée. Le lecteur doit savoir quel gestionnaire utiliser pour chaque type d'événement. Pour de nombreuses applications courantes, nous pouvons créer un gestionnaire personnalisé en sous-classant QXmlDefaultHandler, et l'utiliser pour gérer à la fois les événements d'erreur et de contenu :
Handler *handler = new Handler; xmlReader.setContentHandler(handler); xmlReader.setErrorHandler(handler);
Si vous ne définissez pas au moins les gestionnaires de contenu et d'erreur, l'analyseur syntaxique adoptera son comportement par défaut et ne fera rien.
La façon la plus pratique de traiter l'entrée est de la lire en une seule fois en utilisant la fonction parse() avec un argument qui spécifie la source d'entrée :
bool ok = xmlReader.parse(source); if (!ok) std::cout << "Parsing failed." << std::endl;
Si vous ne pouvez pas analyser l'intégralité de l'entrée en une seule fois (par exemple, si elle est volumineuse ou si elle est transmise via une connexion réseau), les données peuvent être transmises à l'analyseur par morceaux. Pour ce faire, indiquez à parse() de travailler de manière incrémentielle et faites des appels ultérieurs à la fonction parseContinue(), jusqu'à ce que toutes les données aient été traitées.
Une façon courante d'effectuer une analyse incrémentale est de connecter le signal readyRead() d'un network reply à un slot, et de traiter les données entrantes à cet endroit. Voir QNetworkAccessManager.
Certains aspects du comportement de l'analyse syntaxique peuvent être adaptés à l'aide de setFeature() et setProperty().
xmlReader.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
QXmlSimpleReader n'est pas réentrant. Si vous souhaitez utiliser la classe dans un code threadé, verrouillez le code utilisant QXmlSimpleReader à l'aide d'un mécanisme de verrouillage, tel que QMutex.
Notez que cette classe est maintenant obsolète, veuillez utiliser QXmlStreamReader ou QDomDocument pour lire les fichiers XML.
Documentation des fonctions membres
QXmlSimpleReader::QXmlSimpleReader()
Construit un lecteur XML simple.
[virtual noexcept] QXmlSimpleReader::~QXmlSimpleReader()
Détruit le lecteur XML simple.
[override virtual] QXmlDTDHandler *QXmlSimpleReader::DTDHandler() const
Réimplémente : QXmlReader::DTDHandler() const.
Voir également setDTDHandler().
[override virtual] QXmlContentHandler *QXmlSimpleReader::contentHandler() const
Réimplémente : QXmlReader::contentHandler() const.
Voir également setContentHandler().
[override virtual] QXmlDeclHandler *QXmlSimpleReader::declHandler() const
Réimplémente : QXmlReader::declHandler() const.
Voir également setDeclHandler().
[override virtual] QXmlEntityResolver *QXmlSimpleReader::entityResolver() const
Réimplémente : QXmlReader::entityResolver() const.
Voir également setEntityResolver().
[override virtual] QXmlErrorHandler *QXmlSimpleReader::errorHandler() const
Réimplémente : QXmlReader::errorHandler() const.
Voir également setErrorHandler().
[override virtual] bool QXmlSimpleReader::feature(const QString &name, bool *ok = nullptr) const
Réimplémente : QXmlReader::feature(const QString &name, bool *ok) const.
Voir également setFeature().
[override virtual] bool QXmlSimpleReader::hasFeature(const QString &name) const
Réimplémente : QXmlReader::hasFeature(const QString &name) const.
[override virtual] bool QXmlSimpleReader::hasProperty(const QString &name) const
Réimplémente : QXmlReader::hasProperty(const QString &name) const.
[override virtual] QXmlLexicalHandler *QXmlSimpleReader::lexicalHandler() const
Réimplémente : QXmlReader::lexicalHandler() const.
Voir également setLexicalHandler().
[override virtual] bool QXmlSimpleReader::parse(const QXmlInputSource &input)
Réimplémente : QXmlReader::parse(const QXmlInputSource &input).
[override virtual] bool QXmlSimpleReader::parse(const QXmlInputSource *input)
Réimplémente : QXmlReader::parse(const QXmlInputSource *input).
Lit un document XML à partir de input et l'analyse en une seule passe (de manière non incrémentale). Renvoie true si l'analyse est réussie ; sinon, renvoie false.
[virtual] bool QXmlSimpleReader::parse(const QXmlInputSource *input, bool incremental)
Lit un document XML à partir de input et l'analyse. Elle renvoie true si l'analyse est réussie, sinon elle renvoie false, indiquant qu'une erreur s'est produite.
Si incremental est faux, cette fonction renvoie un message faux si le fichier XML n'est pas lu complètement. L'analyse ne peut pas être poursuivie dans ce cas.
Si incremental est vrai, l'analyseur ne renvoie pas un message faux s'il atteint la fin de input avant d'atteindre la fin du fichier XML. Au lieu de cela, il stocke l'état de l'analyseur de manière à ce que l'analyse puisse être poursuivie ultérieurement lorsque davantage de données seront disponibles. Dans ce cas, vous pouvez utiliser la fonction parseContinue() pour poursuivre l'analyse. Cette classe stocke un pointeur sur la source d'entrée input et la fonction parseContinue() tente de lire à partir de cette source d'entrée. Par conséquent, vous ne devez pas supprimer la source d'entrée input tant que vous n'avez pas besoin d'appeler parseContinue().
Si cette fonction est appelée alors que incremental vaut true et qu'une analyse incrémentale est en cours, une nouvelle session d'analyse est lancée et la session précédente est perdue.
Voir aussi parseContinue() et QTcpSocket.
[virtual] bool QXmlSimpleReader::parseContinue()
Poursuit l'analyse incrémentale, en prenant en entrée le fichier QXmlInputSource qui a été spécifié lors du dernier appel à parse(). Pour utiliser cette fonction, vous devez avoir appelé parse() avec l'argument incrémental à true.
Renvoie false en cas d'erreur d'analyse ; sinon, renvoie true, même si la fin du fichier XML n'a pas été atteinte. Vous pouvez poursuivre l'analyse à un stade ultérieur en appelant à nouveau cette fonction lorsqu'il y a plus de données à analyser.
L'appel de cette fonction lorsqu'il n'y a pas de données disponibles dans la source d'entrée indique au lecteur que la fin du fichier XML a été atteinte. Si l'entrée fournie jusqu'à ce point n'était pas bien formée, une erreur d'analyse se produit et false est renvoyé. Si l'entrée fournie était bien formée, true est renvoyé. Il est important de terminer l'entrée de cette manière car cela vous permet de réutiliser le lecteur pour analyser d'autres fichiers XML.
L'appel de cette fonction après que la fin du fichier a été atteinte, mais sans données disponibles, entraînera le renvoi de false, que l'entrée précédente ait été bien formée ou non.
Voir aussi parse(), QXmlInputSource::data(), et QXmlInputSource::next().
[override virtual] void *QXmlSimpleReader::property(const QString &name, bool *ok = nullptr) const
Réimplémente : QXmlReader::property(const QString &name, bool *ok) const.
Voir également setProperty().
[override virtual] void QXmlSimpleReader::setContentHandler(QXmlContentHandler *handler)
Réimplémente : QXmlReader::setContentHandler(QXmlContentHandler *handler).
Voir également contentHandler().
[override virtual] void QXmlSimpleReader::setDTDHandler(QXmlDTDHandler *handler)
Réimplémente : QXmlReader::setDTDHandler(QXmlDTDHandler *handler).
[override virtual] void QXmlSimpleReader::setDeclHandler(QXmlDeclHandler *handler)
Réimplémente : QXmlReader::setDeclHandler(QXmlDeclHandler *handler).
Voir également declHandler().
[override virtual] void QXmlSimpleReader::setEntityResolver(QXmlEntityResolver *handler)
Réimplémente : QXmlReader::setEntityResolver(QXmlEntityResolver *handler).
Voir également entityResolver().
[override virtual] void QXmlSimpleReader::setErrorHandler(QXmlErrorHandler *handler)
Réimplémente : QXmlReader::setErrorHandler(QXmlErrorHandler *handler).
Voir également errorHandler().
[override virtual] void QXmlSimpleReader::setFeature(const QString &name, bool enable)
Réimplémente : QXmlReader::setFeature(const QString &name, bool value).
Active la fonctionnalité name si enable est vrai ; sinon, la désactive.
Le paramètre name doit être l'une des chaînes suivantes :
| Fonctionnalité | Défaut | Notes |
|---|---|---|
| http://xml.org/sax/features/namespaces | vrai | Si cette option est activée, les espaces de noms sont signalés au gestionnaire de contenu. |
| http://xml.org/sax/features/namespace-prefixes | faux | Si l'option est activée, les noms préfixés originaux et les attributs utilisés pour les déclarations d'espaces de noms sont signalés. |
| http://qt-project.org/xml/features/report-whitespace-only-CharData | true (vrai) | Si l'option est activée, les CharData constitués uniquement de caractères d'espacement sont signalés à l'aide de QXmlContentHandler::characters(). S'il est désactivé, les espaces blancs sont ignorés. |
| http://qt-project.org/xml/features/report-start-end-entity | false | Si cette option est activée, l'analyseur syntaxique signale les événements QXmlContentHandler::startEntity() et QXmlContentHandler::endEntity(), de sorte que les données de caractères peuvent être signalées par morceaux. S'il est désactivé, l'analyseur ne signale pas ces événements, mais substitue silencieusement les entités et signale les données de caractères en un seul morceau. |
Voir aussi feature() et hasFeature().
[override virtual] void QXmlSimpleReader::setLexicalHandler(QXmlLexicalHandler *handler)
Réimplémente : QXmlReader::setLexicalHandler(QXmlLexicalHandler *handler).
Voir également lexicalHandler().
[override virtual] void QXmlSimpleReader::setProperty(const QString &name, void *value)
Réimplémente : QXmlReader::setProperty(const QString &name, void *value).
Voir également property().
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.