QXmlStreamReader Class
La classe QXmlStreamReader fournit un analyseur syntaxique rapide permettant de lire des documents XML 1.0 bien formés via une API de traitement en continu simple. En savoir plus...
| En-tête : | #include <QXmlStreamReader> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
- Liste de tous les membres, y compris les membres hérités
- QXmlStreamReader fait partie des classes XML.
Remarque : toutes les fonctions de cette classe sont réentrantes.
Types publics
| enum | Error { NoError, CustomError, NotWellFormedError, PrematureEndOfDocumentError, UnexpectedElementError } |
| enum | ReadElementTextBehaviour { ErrorOnUnexpectedElement, IncludeChildElements, SkipChildElements } |
| enum | TokenType { NoToken, Invalid, StartDocument, EndDocument, StartElement, …, ProcessingInstruction } |
Propriétés
- namespaceProcessing : bool
Fonctions publiques
| QXmlStreamReader() | |
| QXmlStreamReader(QAnyStringView data) | |
| QXmlStreamReader(QIODevice *device) | |
| QXmlStreamReader(const QByteArray &data) | |
| ~QXmlStreamReader() | |
| void | addData(QAnyStringView data) |
| void | addData(const QByteArray &data) |
| void | addExtraNamespaceDeclaration(const QXmlStreamNamespaceDeclaration &extraNamespaceDeclaration) |
| void | addExtraNamespaceDeclarations(const QXmlStreamNamespaceDeclarations &extraNamespaceDeclarations) |
| bool | atEnd() const |
| QXmlStreamAttributes | attributes() const |
| qint64 | characterOffset() const |
| void | clear() |
| qint64 | columnNumber() const |
| QIODevice * | device() const |
| QStringView | documentEncoding() const |
| QStringView | documentVersion() const |
| QStringView | dtdName() const |
| QStringView | dtdPublicId() const |
| QStringView | dtdSystemId() const |
| QXmlStreamEntityDeclarations | entityDeclarations() const |
| int | entityExpansionLimit() const |
| QXmlStreamEntityResolver * | entityResolver() const |
| QXmlStreamReader::Error | error() const |
| QString | errorString() const |
| bool | hasError() const |
(since 6.6) bool | hasStandaloneDeclaration() const |
| bool | isCDATA() const |
| bool | isCharacters() const |
| bool | isComment() const |
| bool | isDTD() const |
| bool | isEndDocument() const |
| bool | isEndElement() const |
| bool | isEntityReference() const |
| bool | isProcessingInstruction() const |
| bool | isStandaloneDocument() const |
| bool | isStartDocument() const |
| bool | isStartElement() const |
| bool | isWhitespace() const |
| qint64 | lineNumber() const |
| QStringView | name() const |
| QXmlStreamNamespaceDeclarations | namespaceDeclarations() const |
| bool | namespaceProcessing() const |
| QStringView | namespaceUri() const |
| QXmlStreamNotationDeclarations | notationDeclarations() const |
| QStringView | prefix() const |
| QStringView | processingInstructionData() const |
| QStringView | processingInstructionTarget() const |
| QStringView | qualifiedName() const |
| void | raiseError(const QString &message = QString()) |
| QString | readElementText(QXmlStreamReader::ReadElementTextBehaviour behaviour = ErrorOnUnexpectedElement) |
| QXmlStreamReader::TokenType | readNext() |
| bool | readNextStartElement() |
(since 6.10) QString | readRawInnerData() |
| void | setDevice(QIODevice *device) |
| void | setEntityExpansionLimit(int limit) |
| void | setEntityResolver(QXmlStreamEntityResolver *resolver) |
| void | setNamespaceProcessing(bool) |
| void | skipCurrentElement() |
| QStringView | text() const |
| QString | tokenString() const |
| QXmlStreamReader::TokenType | tokenType() const |
Description détaillée
QXmlStreamReader fournit une API de flux simple permettant d'analyser des documents XML 1.0 bien formés. Il s'agit d'une alternative au chargement préalable de l'intégralité du XML dans un arbre DOM (voir QDomDocument). QXmlStreamReader lit les données soit à partir d'un flux XML ( QIODevice ) (voir setDevice()), soit à partir d'un flux brut ( QByteArray ) (voir addData()).
Remarque : QXmlStreamReader ne prend en charge que la version 1.0 du langage XML. Les documents déclarant une autre version, telle que « 1.1 », entraîneront une erreur d'analyse.
Qt fournit des classes de QXmlStreamWriter pour l'écriture de XML.
Le principe de base d’un lecteur de flux consiste à présenter un document XML sous la forme d’un flux de tokens, à l’instar de SAX. La principale différence entre QXmlStreamReader et SAX réside dans la manière dont ces tokens XML sont présentés. Avec SAX, l’application doit fournir des gestionnaires (fonctions de rappel) qui reçoivent ce que l’on appelle des événements XML de la part de l’analyseur, au moment où celui-ci le juge opportun. Avec QXmlStreamReader, c’est le code de l’application lui-même qui pilote la boucle et extrait les tokens du lecteur, les uns après les autres, au fur et à mesure de ses besoins. Pour ce faire, on appelle la méthode ` readNext()`, qui permet au lecteur de lire dans le flux d’entrée jusqu’à ce qu’il ait terminé le jeton suivant, moment auquel il renvoie la méthode ` tokenType()`. Un ensemble de fonctions pratiques, notamment ` isStartElement()` et ` text()`, peut alors être utilisé pour examiner le jeton et obtenir des informations sur ce qui a été lu. Le grand avantage de cette approche « pulling » réside dans la possibilité de créer des analyseurs syntaxiques récursifs descendants, ce qui signifie que vous pouvez facilement diviser votre code d’analyse XML en différentes méthodes ou classes. Cela facilite le suivi de l’état propre à l’application lors de l’analyse du XML.
Une boucle typique avec QXmlStreamReader se présente comme suit :
QXmlStreamReader xml;
//...
while (!xml.atEnd()) {
xml.readNext();
//... do processing
}
if (xml.hasError()) {
//... do error handling
}QXmlStreamReader est un analyseur XML 1.0 non validant, à lecture unique, destiné aux documents bien formés. Il ne traite pas les entités analysées externes et n’ effectue pas de validation DTD. Tant qu’aucune erreur ne se produit, l’application peut se fier aux garanties suivantes :
- Le contenu XML satisfait aux critères du W3C relatifs à un XML 1.0 bien formé
- Les références aux entités internes sont remplacées par le texte de remplacement correct.
- Les attributs sont normalisés ou ajoutés conformément au sous-ensemble « DTD » (attributs de bien-formé) interne.
- Les tokens sont fournis dans l’ordre correct pour un document bien formé.
- Un token « StartDocument » (s’il est présent) apparaît avant tous les autres éléments, à l’exception des commentaires et des instructions de traitement.
- Il n’y a au maximum qu’un seul élément DOCTYPE (un token de type DTD), et le cas échéant, il apparaît avant tout autre contenu (à l’exception des éléments StartDocument, des commentaires et des instructions de traitement).
En particulier, dès qu’un jeton de type StartElement, EndElement, Characters, EntityReference ou EndDocument est détecté, aucun jeton de type StartDocument ou DTD n’apparaîtra. Si un tel jeton est présent dans le flux d’entrée, hors ordre, une erreur est levée.
Remarque : les types de tokens Comment et ProcessingInstruction peuvent apparaître n’importe où dans le flux.
Si une erreur se produit lors de l’analyse, les méthodes atEnd() et hasError() renvoient true, tandis que la méthode error() renvoie l’erreur survenue. Les fonctions errorString(), lineNumber(), columnNumber() et characterOffset() permettent de générer un message d’erreur ou d’avertissement approprié. Pour simplifier le code de l’application, QXmlStreamReader intègre un mécanisme raiseError() qui vous permet de déclencher des erreurs personnalisées qui activent la même gestion des erreurs que celle décrite ci-dessus.
L'exemple « QXmlStream Bookmarks » illustre comment utiliser la technique de descente récursive pour lire un fichier de signets XML (XBEL) à l'aide d'un lecteur de flux.
Espaces de noms
QXmlStream comprend et résout les espaces de noms XML. Par exemple, dans le cas d’un élément ` StartElement`, la méthode ` namespaceUri()` renvoie l’espace de noms dans lequel se trouve l’élément, et la méthode ` name()` renvoie le nom local de l’élément. La combinaison de ` namespaceUri ` et du nom identifie de manière unique un élément. Si un préfixe d’espace de noms n’a pas été déclaré dans les entités XML analysées par le lecteur, la méthode ` namespaceUri ` renvoie une valeur vide.
Si vous analysez des données XML qui n’utilisent pas les espaces de noms conformément à la spécification XML ou qui n’utilisent pas du tout d’espaces de noms, vous pouvez utiliser à la place la méthode ` qualifiedName()` de l’élément. Un nom qualifié est constitué de l’ prefix() de l’élément, suivi d’un deux-points, puis de l’ name() locale de l’élément — exactement comme l’élément apparaît dans les données XML brutes. Étant donné que le mappage entre l’ namespaceUri et le préfixe n’est ni unique ni universel, l’utilisation de l’ qualifiedName() doit être évitée pour les données XML conformes aux espaces de noms.
Afin d’analyser des documents autonomes qui utilisent des préfixes d’espace de noms non déclarés, vous pouvez désactiver complètement le traitement des espaces de noms à l’aide de la propriété namespaceProcessing.
Analyse incrémentielle
QXmlStreamReader est un analyseur incrémental. Il peut gérer les cas où le document ne peut pas être analysé en une seule fois car il arrive par morceaux (par exemple, à partir de plusieurs fichiers ou via une connexion réseau). Lorsque le lecteur est à court de données avant que le document complet n’ait été analysé, il signale une exception « PrematureEndOfDocumentError ». Lorsque de nouvelles données arrivent, soit à la suite d’un appel à ` addData()`, soit parce que davantage de données sont disponibles via la méthode réseau ` device()`, le lecteur se remet de l’erreur « PrematureEndOfDocumentError » et poursuit l’analyse des nouvelles données lors du prochain appel à ` readNext()`.
Par exemple, si votre application lit des données depuis le réseau à l’aide d’un network access manager, vous devez envoyer un network request au gestionnaire et recevrez en retour un network reply. Étant donné qu’un « QNetworkReply » est un « QIODevice », vous connectez son signal « readyRead() » à un slot personnalisé, par exemple « slotReadyRead() » dans l’extrait de code présenté dans la section consacrée à « QNetworkAccessManager ». Dans ce slot, vous lisez toutes les données disponibles à l’aide de « readAll() » et vous les transmettez au lecteur de flux XML à l’aide de « addData() ». Vous appelez ensuite votre fonction d’analyse personnalisée qui lit les événements XML à partir du lecteur.
Performances et consommation de mémoire
QXmlStreamReader est conçu pour être économe en mémoire, puisqu’il ne stocke pas l’intégralité de l’arborescence du document XML en mémoire, mais uniquement le token actuel au moment où il est signalé. De plus, QXmlStreamReader évite les nombreuses petites allocations de chaînes de caractères qui sont normalement nécessaires pour mapper un document XML à une API pratique et conforme à Qt. Pour ce faire, il signale toutes les données de type chaîne de caractères sous la forme ` QStringView ` plutôt que sous la forme d’objets ` QString ` réels. L’appel de ` toString()` sur l’un de ces objets renvoie un objet ` QString ` réel équivalent.
Documentation sur les types membres
enum QXmlStreamReader::Error
Cette énumération définit différents cas d'erreur
| Constante | Valeur | Description |
|---|---|---|
QXmlStreamReader::NoError | 0 | Aucune erreur ne s'est produite. |
QXmlStreamReader::CustomError | 2 | Une erreur personnalisée a été déclenchée avec raiseError() |
QXmlStreamReader::NotWellFormedError | 3 | Le parseur a généré une erreur en interne car le XML lu n'était pas bien formé. |
QXmlStreamReader::PrematureEndOfDocumentError | 4 | Le flux d'entrée s'est terminé avant qu'un document XML bien formé n'ait été analysé. Il est possible de récupérer après cette erreur si davantage de données XML arrivent dans le flux, soit en appelant ` addData()`, soit en attendant qu'elles arrivent via ` device()`. |
QXmlStreamReader::UnexpectedElementError | 1 | L'analyseur a rencontré un élément ou un token différent de ceux auxquels il s'attendait. |
enum QXmlStreamReader::ReadElementTextBehaviour
Cette énumération définit les différents comportements de la fonction ` readElementText()`.
| Constante | Valeur | Description |
|---|---|---|
QXmlStreamReader::ErrorOnUnexpectedElement | 0 | Déclenche une exception UnexpectedElementError et renvoie ce qui a été lu jusqu'à présent lorsqu'un élément enfant est rencontré. |
QXmlStreamReader::IncludeChildElements | 1 | Inclut de manière récursive le texte des éléments enfants. |
QXmlStreamReader::SkipChildElements | 2 | Ignore les éléments enfants. |
enum QXmlStreamReader::TokenType
Cette énumération précise le type de jeton que le lecteur vient de lire.
| Constante | Valeur | Description |
|---|---|---|
QXmlStreamReader::NoToken | 0 | Le lecteur n'a encore rien lu. |
QXmlStreamReader::Invalid | 1 | Une erreur s’est produite ; elle est signalée dans les méthodes ` error()` et ` errorString()`. |
QXmlStreamReader::StartDocument | 2 | Le lecteur indique le numéro de version XML dans documentVersion(), et l’encodage tel que spécifié dans le document XML dans documentEncoding(). Si le document est déclaré autonome, isStandaloneDocument() renvoie true; sinon, il renvoie false. |
QXmlStreamReader::EndDocument | 3 | Le lecteur signale la fin du document. |
QXmlStreamReader::StartElement | 4 | Le lecteur signale le début d’un élément à l’aide de namespaceUri() et name(). Les éléments vides sont également signalés par StartElement, suivi directement de EndElement. La fonction pratique readElementText() peut être appelée pour concaténer tout le contenu jusqu’à l’EndElement correspondant. Les attributs sont signalés dans attributes(), les déclarations d’espace de noms dans namespaceDeclarations(). |
QXmlStreamReader::EndElement | 5 | Le lecteur signale la fin d’un élément avec namespaceUri() et name(). |
QXmlStreamReader::Characters | 6 | Le lecteur signale les caractères via text(). Si les caractères sont tous des espaces, isWhitespace() renvoie true. Si les caractères proviennent d’une section CDATA, isCDATA() renvoie true. |
QXmlStreamReader::Comment | 7 | Le lecteur signale un commentaire dans text(). |
QXmlStreamReader::DTD | 8 | Le lecteur signale une DTD dans text(), des déclarations de notation dans notationDeclarations() et des déclarations d’entités dans entityDeclarations(). Les détails de la déclaration de la DTD sont indiqués dans dtdName(), dtdPublicId() et dtdSystemId(). |
QXmlStreamReader::EntityReference | 9 | Le lecteur signale une référence d’entité qui n’a pas pu être résolue. Le nom de la référence est indiqué dans name(), et le texte de remplacement dans text(). |
QXmlStreamReader::ProcessingInstruction | 10 | Le lecteur signale une instruction de traitement dans processingInstructionTarget() et processingInstructionData(). |
Documentation sur les propriétés
namespaceProcessing : bool
Cette propriété contient l'indicateur de traitement des espaces de noms du lecteur de flux.
Cette propriété détermine si le lecteur de flux traite ou non les espaces de noms. Si elle est activée, le lecteur traite les espaces de noms ; dans le cas contraire, il ne les traite pas.
Par défaut, le traitement des espaces de noms est activé.
Fonctions d'accès :
| bool | namespaceProcessing() const |
| void | setNamespaceProcessing(bool) |
Documentation des fonctions membres
QXmlStreamReader::QXmlStreamReader()
Crée un lecteur de flux.
Voir également setDevice() et addData().
[explicit] QXmlStreamReader::QXmlStreamReader(QAnyStringView data)
Crée un nouveau lecteur de flux qui lit à partir de data.
Remarque : dans les versions de Qt antérieures à la version 6.5, ce constructeur était surchargé pour QString et const char*.
Voir également addData(), clear() et setDevice().
[explicit] QXmlStreamReader::QXmlStreamReader(QIODevice *device)
Crée un nouveau lecteur de flux qui lit à partir de device.
Voir également setDevice() et clear().
[explicit] QXmlStreamReader::QXmlStreamReader(const QByteArray &data)
Crée un nouveau lecteur de flux qui lit à partir de data.
Il s'agit d'une fonction surchargée.
Voir également addData(), clear() et setDevice().
[noexcept] QXmlStreamReader::~QXmlStreamReader()
Cela perturbe le lecteur.
void QXmlStreamReader::addData(QAnyStringView data)
Ajoute davantage d'data s à l'intention du lecteur. Cette fonction ne fait rien si le lecteur dispose d'une instance de ` device()`.
Remarque : dans les versions de Qt antérieures à la version 6.5, cette fonction était surchargée pour les méthodes ` QString ` et ` const char*`.
Voir également readNext() et clear().
void QXmlStreamReader::addData(const QByteArray &data)
Ajoute davantage d'data s à l'intention du lecteur. Cette fonction ne fait rien si le lecteur dispose d'un objet ` device()`.
Il s'agit d'une fonction surchargée.
Voir également readNext() et clear().
void QXmlStreamReader::addExtraNamespaceDeclaration(const QXmlStreamNamespaceDeclaration &extraNamespaceDeclaration)
Ajoute une déclaration ` extraNamespaceDeclaration`. Cette déclaration s'appliquera aux enfants de l'élément courant ou, si la fonction est appelée avant la lecture de tout élément, à l'ensemble du document XML.
Voir également namespaceDeclarations(), addExtraNamespaceDeclarations() et setNamespaceProcessing().
void QXmlStreamReader::addExtraNamespaceDeclarations(const QXmlStreamNamespaceDeclarations &extraNamespaceDeclarations)
Ajoute un vecteur de déclarations spécifiées par extraNamespaceDeclarations.
Voir également namespaceDeclarations() et addExtraNamespaceDeclaration().
bool QXmlStreamReader::atEnd() const
Renvoie ` true ` si le lecteur a lu jusqu'à la fin du document XML, ou si une erreur ` error()` s'est produite et que la lecture a été interrompue. Sinon, elle renvoie ` false`.
Lorsque atEnd() et hasError() renvoient true et que error() renvoie PrematureEndOfDocumentError, cela signifie que le XML est bien formé jusqu’à présent, mais qu’aucun document XML complet n’a encore été analysé. Le bloc d’XML suivant peut être ajouté à l’aide de ` addData()` si l’XML est lu à partir d’un ` QByteArray`, ou en attendant l’arrivée de nouvelles données si l’XML est lu à partir d’un ` QIODevice`. Dans les deux cas, `atEnd()` renverra `false` dès que de nouvelles données seront disponibles.
Voir également les méthodes ` hasError()`, ` error()`, ` device()` et ` QIODevice::atEnd()`.
QXmlStreamAttributes QXmlStreamReader::attributes() const
Renvoie les attributs d'un objet ` StartElement`.
qint64 QXmlStreamReader::characterOffset() const
Renvoie l'index du caractère courant, en partant de 0.
Voir également lineNumber() et columnNumber().
void QXmlStreamReader::clear()
Supprime toute commande « device » () ou toute donnée du lecteur et rétablit son état interne à son état initial.
Voir aussi addData().
qint64 QXmlStreamReader::columnNumber() const
Renvoie le numéro de la colonne actuelle, en commençant par 0.
Voir également lineNumber() et characterOffset().
QIODevice *QXmlStreamReader::device() const
Renvoie le périphérique actuel associé à l'QXmlStreamReader, ou nullptr si aucun périphérique n'a été attribué.
Voir également setDevice().
QStringView QXmlStreamReader::documentEncoding() const
Si la fonction ` tokenType()` a pour valeur ` StartDocument`, cette fonction renvoie la chaîne d'encodage telle qu'elle est spécifiée dans la déclaration XML. Dans le cas contraire, elle renvoie une chaîne vide.
QStringView QXmlStreamReader::documentVersion() const
Si l'tokenType() est StartDocument, cette fonction renvoie la chaîne de version telle qu'elle est spécifiée dans la déclaration XML. Sinon, elle renvoie une chaîne vide.
QStringView QXmlStreamReader::dtdName() const
Si l'tokenType() est DTD, cette fonction renvoie le nom de la DTD. Sinon, elle renvoie une chaîne vide.
QStringView QXmlStreamReader::dtdPublicId() const
Si l'tokenType() est DTD, cette fonction renvoie l'identifiant public de la DTD. Sinon, elle renvoie une chaîne vide.
QStringView QXmlStreamReader::dtdSystemId() const
Si l'tokenType() est DTD, cette fonction renvoie l'identifiant système de la DTD. Sinon, elle renvoie une chaîne vide.
QXmlStreamEntityDeclarations QXmlStreamReader::entityDeclarations() const
Si l'tokenType() est DTD, cette fonction renvoie les déclarations d'entités (externes) non analysées de la DTD. Sinon, elle renvoie un vecteur vide.
La classe ` QXmlStreamEntityDeclarations ` est définie comme étant une ` QList ` de ` QXmlStreamEntityDeclaration`.
int QXmlStreamReader::entityExpansionLimit() const
Renvoie le nombre maximal de caractères auquel une entité unique peut s'étendre. Si une entité unique dépasse la limite indiquée, le document n'est pas considéré comme bien formé.
Voir également setEntityExpansionLimit.
QXmlStreamEntityResolver *QXmlStreamReader::entityResolver() const
Renvoie le résolveur d'entités, ou ` nullptr ` s'il n'y en a pas.
Voir également setEntityResolver().
QXmlStreamReader::Error QXmlStreamReader::error() const
Renvoie le type de l'erreur actuelle, ou NoError si aucune erreur ne s'est produite.
Voir également errorString() et raiseError().
QString QXmlStreamReader::errorString() const
Renvoie le message d'erreur défini à l'aide de la fonction raiseError().
Voir également error(), lineNumber(), columnNumber() et characterOffset().
bool QXmlStreamReader::hasError() const
Renvoie « true » si une erreur s'est produite, sinon « false ».
Voir également errorString() et error().
[since 6.6] bool QXmlStreamReader::hasStandaloneDeclaration() const
Renvoie « true » si ce document comporte une déclaration explicite « standalone » (pouvant prendre la valeur « yes » ou « no ») ; sinon, renvoie « false » ;
Si aucune déclaration XML n’a été analysée, cette fonction renvoie « false ».
Cette fonction a été introduite dans Qt 6.6.
Voir également isStandaloneDocument().
bool QXmlStreamReader::isCDATA() const
Renvoie « true » si le lecteur signale des caractères provenant d’une section CDATA ; sinon, renvoie « false ».
Voir également isCharacters() et text().
bool QXmlStreamReader::isCharacters() const
Renvoie « true » si « tokenType() » est égal à « Characters » ; sinon, renvoie « false ».
Voir également isWhitespace() et isCDATA().
bool QXmlStreamReader::isComment() const
Renvoie « true » si « tokenType() » est égal à « Comment » ; sinon, renvoie « false ».
bool QXmlStreamReader::isDTD() const
Renvoie « true » si « tokenType() » est égal à « DTD » ; sinon, renvoie « false ».
bool QXmlStreamReader::isEndDocument() const
Renvoie « true » si « tokenType() » est égal à « EndDocument » ; sinon, renvoie « false ».
bool QXmlStreamReader::isEndElement() const
Renvoie « true » si « tokenType() » est égal à « EndElement » ; sinon, renvoie « false ».
bool QXmlStreamReader::isEntityReference() const
Renvoie « true » si « tokenType() » est égal à « EntityReference » ; sinon, renvoie « false ».
bool QXmlStreamReader::isProcessingInstruction() const
Renvoie « true » si « tokenType() » est égal à « ProcessingInstruction » ; sinon, renvoie « false ».
bool QXmlStreamReader::isStandaloneDocument() const
Renvoie « true » si ce document a été déclaré « standalone » dans la déclaration XML ; sinon, renvoie « false ».
Si aucune déclaration XML n’a été analysée, cette fonction renvoie « false ».
Voir également hasStandaloneDeclaration().
bool QXmlStreamReader::isStartDocument() const
Renvoie « true » si « tokenType() » est égal à « StartDocument » ; sinon, renvoie « false ».
bool QXmlStreamReader::isStartElement() const
Renvoie « true » si « tokenType() » est égal à « StartElement » ; sinon, renvoie « false ».
bool QXmlStreamReader::isWhitespace() const
Renvoie « true » si le lecteur signale des caractères composés uniquement d'espaces ; sinon, renvoie « false ».
Voir également isCharacters() et text().
qint64 QXmlStreamReader::lineNumber() const
Renvoie le numéro de ligne actuel, en commençant par 1.
Voir également columnNumber() et characterOffset().
QStringView QXmlStreamReader::name() const
Renvoie le nom local d'une instance de ` StartElement`, ` EndElement` ou ` EntityReference`.
Voir aussi namespaceUri() et qualifiedName().
QXmlStreamNamespaceDeclarations QXmlStreamReader::namespaceDeclarations() const
Si tokenType() est StartElement, cette fonction renvoie les déclarations d'espace de noms de l'élément. Sinon, elle renvoie un vecteur vide.
La classe ` QXmlStreamNamespaceDeclarations ` est définie comme étant une ` QList ` de ` QXmlStreamNamespaceDeclaration`.
Voir également addExtraNamespaceDeclaration() et addExtraNamespaceDeclarations().
QStringView QXmlStreamReader::namespaceUri() const
Renvoie le « namespaceUri » d'un « StartElement » ou d'un « EndElement ».
Voir également name() et qualifiedName().
QXmlStreamNotationDeclarations QXmlStreamReader::notationDeclarations() const
Si l'tokenType() est DTD, cette fonction renvoie les déclarations de notation de la DTD. Sinon, elle renvoie un vecteur vide.
La classe ` QXmlStreamNotationDeclarations ` est définie comme étant une ` QList ` de ` QXmlStreamNotationDeclaration`.
QStringView QXmlStreamReader::prefix() const
Renvoie le préfixe d'un StartElement ou d'un EndElement.
Voir également name() et qualifiedName().
QStringView QXmlStreamReader::processingInstructionData() const
Renvoie les données d'un objet ` ProcessingInstruction`.
QStringView QXmlStreamReader::processingInstructionTarget() const
Renvoie la cible d'une opération « ProcessingInstruction ».
QStringView QXmlStreamReader::qualifiedName() const
Renvoie le nom qualifié d'un élément StartElement ou EndElement;
Un nom qualifié est le nom brut d’un élément dans les données XML. Il se compose du préfixe de l’espace de noms, suivi d’un deux-points, puis du nom local de l’élément. Étant donné que le préfixe d’espace de noms n’est pas unique (un même préfixe peut désigner différents espaces de noms et différents préfixes peuvent désigner le même espace de noms), vous ne devez pas utiliser la fonction `qualifiedName()`, mais plutôt la fonction ` namespaceUri()` (qui renvoie le nom résolu) et la fonction ` name()` (qui renvoie le nom local de l’attribut).
Voir également name(), prefix() et namespaceUri().
void QXmlStreamReader::raiseError(const QString &message = QString())
Déclenche une erreur personnalisée avec une message d'erreur facultative.
Voir également error() et errorString().
QString QXmlStreamReader::readElementText(QXmlStreamReader::ReadElementTextBehaviour behaviour = ErrorOnUnexpectedElement)
Fonction pratique à appeler lorsqu’un fichier « StartElement » a été lu. Elle lit le contenu jusqu’à la balise « EndElement » correspondante et renvoie tout le texte situé entre ces deux balises. En l’absence d’erreur, le token actuel (voir tokenType()) après l’appel de cette fonction est EndElement.
La fonction concatène text() lorsqu’elle lit les tokens Characters ou EntityReference, mais ignore ProcessingInstruction et Comment. Si le token actuel n’est pas StartElement, une chaîne vide est renvoyée.
L’exception behaviour définit ce qui se passe si un autre élément est lu avant d’atteindre EndElement. La fonction peut inclure le texte des éléments enfants (utile par exemple pour le HTML), ignorer les éléments enfants, ou lever une UnexpectedElementError et renvoyer ce qui a été lu jusqu’à présent (par défaut).
QXmlStreamReader::TokenType QXmlStreamReader::readNext()
Lit le jeton suivant et renvoie son type.
À une exception près, dès lors qu’une exception ` error()` est signalée par `readNext()`, il n’est plus possible de poursuivre la lecture du flux XML. Dans ce cas, ` atEnd()` renvoie ` true`, ` hasError()` renvoie ` true` et cette fonction renvoie ` QXmlStreamReader::Invalid`.
La seule exception se produit lorsque ` error()` renvoie ` PrematureEndOfDocumentError`. Cette erreur est signalée lorsque la fin d’un bloc XML par ailleurs bien formé est atteinte, mais que ce bloc ne représente pas un document XML complet. Dans ce cas, l’analyse peut être reprise en appelant ` addData()` pour ajouter le fragment XML suivant, lorsque le flux est lu à partir d’un ` QByteArray`, ou en attendant l’arrivée de nouvelles données lorsque le flux est lu à partir d’un ` device()`.
Voir également tokenType() et tokenString().
bool QXmlStreamReader::readNextStartElement()
Lit jusqu’à l’élément de début suivant à l’intérieur de l’élément courant. Renvoie « true » lorsqu’un élément de début a été atteint. Lorsque l’élément de fin a été atteint, ou lorsqu’une erreur s’est produite, la valeur « false » est renvoyée.
L'élément courant est l'élément correspondant à l'élément de début analysé le plus récemment et pour lequel l'élément de fin correspondant n'a pas encore été atteint. Lorsque l'analyseur a atteint l'élément de fin, l'élément courant devient l'élément parent.
Il s’agit d’une fonction pratique lorsque vous vous intéressez uniquement à l’analyse des éléments XML. L’exemple « QXmlStream Bookmarks » utilise largement cette fonction.
Voir également ` readNext()`.
[since 6.10] QString QXmlStreamReader::readRawInnerData()
Lit et renvoie le contenu XML brut interne de l'élément courant. Cette fonction est utile pour récupérer l'intégralité du contenu intégré à un élément, y compris les balises imbriquées, le texte, les commentaires, les instructions de traitement, les sections CDATA et autres balises, tout en conservant la structure XML d'origine.
L'élément courant est l'élément correspondant à l'élément de début analysé le plus récemment et pour lequel l'élément de fin correspondant n'a pas encore été atteint. Lorsque l'analyseur a atteint l'élément de fin, l'élément courant devient l'élément parent.
Remarque : les référencesd’entités définies dans la DTD sont résolues lors de l’analyse et renvoyées sous forme de texte brut, car les déclarations DTD sont traitées séparément et ne font pas partie du contenu de l’élément. Seules les cinq entités XML prédéfinies (<, >, &, ', ") sont ré-échappées dans la sortie.
Cette fonction a été introduite dans Qt 6.10.
void QXmlStreamReader::setDevice(QIODevice *device)
Définit le périphérique actuel sur device. La définition de ce périphérique réinitialise le flux à son état initial.
Voir également device() et clear().
void QXmlStreamReader::setEntityExpansionLimit(int limit)
Définit le nombre maximal de caractères auquel une entité peut se développer à l'adresse limit. Si une entité dépasse la limite indiquée, le document n'est pas considéré comme bien formé.
Cette limite vise à prévenir les attaques par déni de service (DoS) lors du chargement de documents XML inconnus, dans lesquels le développement récursif des entités pourrait autrement épuiser toute la mémoire disponible.
La valeur par défaut de cette propriété est de 4 096 caractères.
La valeur minimale est un (1), afin de prendre en charge les entités XML intégrées (<, etc.).
Voir également entityExpansionLimit.
void QXmlStreamReader::setEntityResolver(QXmlStreamEntityResolver *resolver)
Crée un nouvel objet « entityResolver » ( resolver ).
Le lecteur de flux ne prend pas possession du résolveur. Il incombe à l’appelant de s’assurer que le résolveur est valide pendant toute la durée de vie de l’objet lecteur de flux, ou jusqu’à ce qu’un autre résolveur ou une autre instance de ` nullptr ` soit défini(e).
Voir également entityResolver().
void QXmlStreamReader::skipCurrentElement()
Lit jusqu'à la fin de l'élément courant, en ignorant tous les nœuds enfants. Cette fonction est utile pour ignorer les éléments inconnus.
L'élément courant est l'élément correspondant à l'élément de début analysé le plus récemment, pour lequel aucun élément de fin correspondant n'a encore été atteint. Lorsque l'analyseur a atteint l'élément de fin, l'élément courant devient l'élément parent.
QStringView QXmlStreamReader::text() const
Renvoie le texte de Characters, Comment, DTD ou EntityReference.
QString QXmlStreamReader::tokenString() const
Renvoie le token actuel du lecteur sous forme de chaîne de caractères.
Voir aussi ` tokenType()`.
QXmlStreamReader::TokenType QXmlStreamReader::tokenType() const
Renvoie le type du jeton actuel.
Le jeton actuel peut également être interrogé à l'aide des fonctions pratiques suivantes : isStartDocument(), isEndDocument(), isStartElement(), isEndElement(), isCharacters(), isComment(), isDTD(), isEntityReference() et isProcessingInstruction().
Voir également tokenString().
© 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.