Sur cette page

QXmlStreamReader Class

La classe QXmlStreamReader fournit un analyseur rapide pour la lecture de documents XML 1.0 bien formés via une API de flux simple. Plus d'informations...

En-tête : #include <QXmlStreamReader>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core

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

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 pour analyser des documents XML 1.0 bien formés. Il s'agit d'une alternative au chargement préalable du XML complet dans un arbre DOM (voir QDomDocument). QXmlStreamReader lit les données soit à partir d'un QIODevice (voir setDevice()), soit à partir d'un QByteArray brut (voir addData()).

Remarque : QXmlStreamReader ne prend en charge que la version 1.0 de XML. Les documents déclarant une autre version, telle que "1.1", entraîneront une erreur d'analyse.

Qt fournit QXmlStreamWriter pour l'écriture de XML.

Le concept de base d'un lecteur de flux est de rapporter un document XML comme un flux de jetons, similaire à SAX. La principale différence entre QXmlStreamReader et SAX est la manière dont ces jetons XML sont rapporté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 l'analyseur, à la convenance de ce dernier. Avec QXmlStreamReader, le code de l'application conduit lui-même la boucle et extrait les jetons du lecteur, l'un après l'autre, au fur et à mesure qu'il en a besoin. Pour ce faire, il appelle readNext(), où le lecteur lit le flux d'entrée jusqu'à ce qu'il ait terminé le jeton suivant, après quoi il renvoie tokenType(). Un ensemble de fonctions pratiques, dont 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 est la possibilité de construire des analyseurs descendants récursifs, ce qui signifie que vous pouvez facilement diviser votre code d'analyse XML en différentes méthodes ou classes. Il est ainsi facile de suivre l'état de l'application lors de l'analyse XML.

Une boucle typique avec QXmlStreamReader ressemble à ceci :

QXmlStreamReader xml;
//...
while (!xml.atEnd()) {
    xml.readNext();
    //... do processing
}
if (xml.hasError()) {
    //... do error handling
}

QXmlStreamReader est un analyseur non validant, uniquement XML 1.0 pour les documents bien formés. Il ne traite pas les entités externes analysées et n' effectue pas de validation DTD. Tant qu'aucune erreur ne se produit, l'application peut s'appuyer sur les garanties suivantes :

  • Le contenu XML satisfait aux critères du W3C pour 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 interne DTD.
  • Les jetons sont fournis dans l'ordre correct pour un document bien formé.
  • Le jeton StartDocument (s'il est présent) apparaît avant tous les autres éléments, à l'exception des commentaires et des instructions de traitement.
  • Au maximum, un élément DOCTYPE (un jeton de type DTD) est présent, et si c'est le cas, il apparaît avant tout autre contenu (à l'exception de StartDocument, des commentaires et des instructions de traitement).

En particulier, une fois qu'un élément de type StartElement, EndElement, Characters, EntityReference ou EndDocument est vu, aucun élément de type StartDocument ou DTD ne sera vu. Si l'un d'entre eux est présent dans le flux d'entrée, dans le désordre, une erreur est levée.

Remarque : les jetons de type Comment et ProcessingInstruction peuvent apparaître n'importe où dans le flux.

Si une erreur survient lors de l'analyse, atEnd() et hasError() renvoient un message vrai, et error() renvoie l'erreur qui s'est produite. Les fonctions errorString(), lineNumber(), columnNumber() et characterOffset() permettent de construire un message d'erreur ou d'avertissement approprié. Pour simplifier le code de l'application, QXmlStreamReader contient un mécanisme raiseError() qui vous permet de soulever des erreurs personnalisées qui déclenchent la même gestion des erreurs que celle décrite.

L'exemple QXmlStream Bookmarks illustre comment utiliser la technique de descente récursive pour lire un fichier de signets XML (XBEL) avec un lecteur de flux.

Espaces de noms

QXmlStream comprend et résout les espaces de noms XML. Par exemple, dans le cas d'un StartElement, namespaceUri() renvoie l'espace de noms dans lequel se trouve l'élément, et name() renvoie le nom local de l'élément. La combinaison de namespaceUri et du nom identifie un élément de manière unique. Si un préfixe d'espace de noms n'a pas été déclaré dans les entités XML analysées par le lecteur, namespaceUri est vide.

Si vous analysez des données XML qui n'utilisent pas d'espaces de noms conformément à la spécification XML ou qui n'utilisent pas d'espaces de noms du tout, vous pouvez utiliser le qualifiedName() de l'élément à la place. Un nom qualifié est le prefix() de l'élément, suivi de deux points et du name() local de l'élément - exactement comme l'élément apparaît dans les données XML brutes. Étant donné que la correspondance entre namespaceUri et le préfixe n'est ni unique ni universelle, qualifiedName() doit être évité pour les données XML conformes à l'espace de noms.

Pour analyser les documents autonomes qui utilisent des préfixes d'espace de noms non déclarés, vous pouvez désactiver complètement le traitement de l'espace de noms à l'aide de la propriété namespaceProcessing.

Analyse incrémentale

QXmlStreamReader est un analyseur incrémental. Il peut gérer le cas où le document ne peut pas être analysé en une seule fois parce qu'il arrive par morceaux (par exemple, à partir de plusieurs fichiers ou via une connexion réseau). Lorsque le lecteur n'a plus de données avant que le document ait été entièrement analysé, il signale une erreur PrematureEndOfDocumentError. Lorsque de nouvelles données arrivent, soit à la suite d'un appel à addData(), soit parce que de nouvelles données sont disponibles via le réseau device(), le lecteur se remet de l'erreur PrematureEndOfDocumentError et poursuit l'analyse des nouvelles données lors de l'appel suivant à readNext().

Par exemple, si votre application lit des données sur le réseau à l'aide d'un network access manager, vous enverrez un network request au gestionnaire et recevrez un network reply en retour. É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 discussion sur QNetworkAccessManager. Dans ce slot, vous lisez toutes les données disponibles avec readAll() et les transmettez au lecteur de flux XML avec 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 conserver la mémoire, puisqu'il ne stocke pas l'arborescence complète du document XML en mémoire, mais seulement le jeton actuel au moment où il est signalé. En outre, QXmlStreamReader évite les nombreuses petites allocations de chaînes de caractères qu'il faut normalement pour mapper un document XML dans une API pratique et de type Qt XML. Pour ce faire, il rapporte toutes les données de chaînes sous forme de QStringView plutôt que de véritables objets QString. L'appel à toString() sur l'un de ces objets renvoie un objet réel équivalent QString.

Documentation des types de membres

enum QXmlStreamReader::Error

Cette énumération spécifie les différents cas d'erreur

ConstanteValeurDescription de l'erreur
QXmlStreamReader::NoError0Aucune erreur ne s'est produite.
QXmlStreamReader::CustomError2Une erreur personnalisée a été soulevée avec raiseError()
QXmlStreamReader::NotWellFormedError3L'analyseur a soulevé une erreur interne parce que le document XML lu n'était pas bien formé.
QXmlStreamReader::PrematureEndOfDocumentError4Le flux d'entrée s'est terminé avant qu'un document XML bien formé n'ait été analysé. La récupération de cette erreur est possible si plus de XML arrive dans le flux, soit en appelant addData() ou en attendant qu'il arrive sur device().
QXmlStreamReader::UnexpectedElementError1L'analyseur a rencontré un élément ou un jeton différent de ceux auxquels il s'attendait.

enum QXmlStreamReader::ReadElementTextBehaviour

Cette énumération spécifie les différents comportements de readElementText().

ConstanteValeurDescription
QXmlStreamReader::ErrorOnUnexpectedElement0Lance un UnexpectedElementError et renvoie ce qui a été lu jusqu'à présent lorsqu'un élément enfant est rencontré.
QXmlStreamReader::IncludeChildElements1Inclure récursivement le texte des éléments enfants.
QXmlStreamReader::SkipChildElements2Sauter les éléments enfants.

enum QXmlStreamReader::TokenType

Cette énumération indique le type de jeton que le lecteur vient de lire.

ConstanteValeurDescription
QXmlStreamReader::NoToken0Le lecteur n'a encore rien lu.
QXmlStreamReader::Invalid1Une erreur s'est produite, signalée dans error() et errorString().
QXmlStreamReader::StartDocument2Le lecteur indique le numéro de version XML dans documentVersion() et le codage spécifié dans le document XML dans documentEncoding(). Si le document est déclaré autonome, isStandaloneDocument() renvoie true; sinon, il renvoie false.
QXmlStreamReader::EndDocument3Le lecteur signale la fin du document.
QXmlStreamReader::StartElement4Le lecteur signale le début d'un élément avec namespaceUri() et name(). Les éléments vides sont également signalés par StartElement, suivi directement par EndElement. La fonction de commodité readElementText() peut être appelée pour concaténer tout le contenu jusqu'à l'élément final correspondant. Les attributs sont signalés dans attributes(), les déclarations d'espace de noms dans namespaceDeclarations().
QXmlStreamReader::EndElement5Le lecteur signale la fin d'un élément avec namespaceUri() et name().
QXmlStreamReader::Characters6Le lecteur signale les caractères dans text(). Si les caractères sont tous des espaces blancs, isWhitespace() renvoie true. Si les caractères proviennent d'une section CDATA, isCDATA() renvoie true.
QXmlStreamReader::Comment7Le lecteur signale un commentaire dans text().
QXmlStreamReader::DTD8Le lecteur signale une DTD dans text(), des déclarations de notation dans notationDeclarations() et des déclarations d'entité dans entityDeclarations(). Les détails de la déclaration DTD sont rapportés dans dtdName(), dtdPublicId() et dtdSystemId().
QXmlStreamReader::EntityReference9Le 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(), le texte de remplacement dans text().
QXmlStreamReader::ProcessingInstruction10Le 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 l'option est activée, le lecteur traite les espaces de noms, sinon il ne le fait 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()

Construit un lecteur de flux.

Voir aussi setDevice() et addData().

[explicit] QXmlStreamReader::QXmlStreamReader(QAnyStringView data)

Crée un nouveau lecteur de flux qui lit à partir de data.

Note : Dans les versions de Qt antérieures à la 6.5, ce constructeur était surchargé pour QString et const char*.

Voir aussi addData(), clear() et setDevice().

[explicit] QXmlStreamReader::QXmlStreamReader(QIODevice *device)

Crée un nouveau lecteur de flux qui lit à partir de device.

Voir aussi 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 aussi addData(), clear() et setDevice().

[noexcept] QXmlStreamReader::~QXmlStreamReader()

Détruit le lecteur.

void QXmlStreamReader::addData(QAnyStringView data)

Ajoute plus de data pour que le lecteur puisse le lire. Cette fonction ne fait rien si le lecteur a un device().

Remarque : dans les versions de Qt antérieures à la version 6.5, cette fonction était surchargée pour QString et const char*.

Voir aussi readNext() et clear().

void QXmlStreamReader::addData(const QByteArray &data)

Ajoute plus de data pour que le lecteur puisse le lire. Cette fonction ne fait rien si le lecteur a un device().

Il s'agit d'une fonction surchargée.

Voir aussi readNext() et clear().

void QXmlStreamReader::addExtraNamespaceDeclaration(const QXmlStreamNamespaceDeclaration &extraNamespaceDeclaration)

Ajoute un extraNamespaceDeclaration. La déclaration sera valide pour les enfants de l'élément actuel, ou - si la fonction est appelée avant qu'aucun élément ne soit lu - pour l'ensemble du document XML.

Voir aussi namespaceDeclarations(), addExtraNamespaceDeclarations() et setNamespaceProcessing().

void QXmlStreamReader::addExtraNamespaceDeclarations(const QXmlStreamNamespaceDeclarations &extraNamespaceDeclarations)

Ajoute un vecteur de déclarations spécifié par extraNamespaceDeclarations.

Voir aussi namespaceDeclarations() et addExtraNamespaceDeclaration().

bool QXmlStreamReader::atEnd() const

Renvoie true si le lecteur a lu jusqu'à la fin du document XML, ou si un error() s'est produit et que la lecture a été interrompue. Sinon, il renvoie false.

Lorsque atEnd() et hasError() renvoient true et que error() renvoie PrematureEndOfDocumentError, cela signifie que le XML a été bien formé jusqu'à présent, mais qu'un document XML complet n'a pas été analysé. Le prochain morceau de XML peut être ajouté avec addData(), si le XML est lu à partir d'un QByteArray, ou en attendant que d'autres données arrivent si le XML est lu à partir d'un QIODevice. Dans tous les cas, atEnd() renverra faux une fois que d'autres données seront disponibles.

Voir également hasError(), error(), device() et QIODevice::atEnd().

QXmlStreamAttributes QXmlStreamReader::attributes() const

Renvoie les attributs d'un StartElement.

qint64 QXmlStreamReader::characterOffset() const

Renvoie le décalage actuel des caractères, en commençant par 0.

Voir aussi lineNumber() et columnNumber().

void QXmlStreamReader::clear()

Supprime toute device() ou donnée du lecteur et remet son état interne à l'état initial.

Voir également addData().

qint64 QXmlStreamReader::columnNumber() const

Renvoie le numéro de la colonne actuelle, en commençant par 0.

Voir aussi lineNumber() et characterOffset().

QIODevice *QXmlStreamReader::device() const

Renvoie le dispositif actuel associé à QXmlStreamReader, ou nullptr si aucun dispositif n'a été assigné.

Voir aussi setDevice().

QStringView QXmlStreamReader::documentEncoding() const

Si tokenType() est StartDocument, cette fonction renvoie la chaîne d'encodage spécifiée dans la déclaration XML. Sinon, elle renvoie une chaîne vide.

QStringView QXmlStreamReader::documentVersion() const

Si l'adresse tokenType() est StartDocument, cette fonction renvoie la chaîne de la 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'adresse tokenType() est DTD, cette fonction renvoie le nom de la DTD. Sinon, elle renvoie une chaîne vide.

QStringView QXmlStreamReader::dtdPublicId() const

Si l'adresse 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'adresse 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 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 la quantité maximale de caractères qu'une seule entité peut contenir. Si une seule entité dépasse la limite donnée, le document n'est pas considéré comme bien formé.

Voir aussi setEntityExpansionLimit.

QXmlStreamEntityResolver *QXmlStreamReader::entityResolver() const

Renvoie le résolveur d'entités, ou nullptr s'il n'y a pas de résolveur d'entités.

Voir aussi setEntityResolver().

QXmlStreamReader::Error QXmlStreamReader::error() const

Renvoie le type de l'erreur en cours, ou NoError si aucune erreur ne s'est produite.

Voir aussi errorString() et raiseError().

QString QXmlStreamReader::errorString() const

Renvoie le message d'erreur qui a été défini avec raiseError().

Voir aussi error(), lineNumber(), columnNumber() et characterOffset().

bool QXmlStreamReader::hasError() const

Renvoie true si une erreur s'est produite, sinon false.

Voir aussi errorString() et error().

[since 6.6] bool QXmlStreamReader::hasStandaloneDeclaration() const

Renvoie true si ce document possède une déclaration autonome explicite (peut être "oui" ou "non") ; 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 aussi isStandaloneDocument().

bool QXmlStreamReader::isCDATA() const

Renvoie true si le lecteur signale des caractères provenant d'une section CDATA ; sinon, renvoie false.

Voir aussi isCharacters() et text().

bool QXmlStreamReader::isCharacters() const

Renvoie true si tokenType() est égal à Characters; sinon, renvoie false.

Voir aussi 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é autonome dans la déclaration XML ; sinon, renvoie false.

Si aucune déclaration XML n'a été analysée, cette fonction renvoie false.

Voir aussi 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 constitués uniquement d'espaces blancs ; sinon, renvoie false.

Voir aussi isCharacters() et text().

qint64 QXmlStreamReader::lineNumber() const

Renvoie le numéro de ligne actuel, en commençant par 1.

Voir aussi columnNumber() et characterOffset().

QStringView QXmlStreamReader::name() const

Renvoie le nom local d'un StartElement, EndElement, ou d'un 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 un QList de QXmlStreamNamespaceDeclaration.

Voir aussi addExtraNamespaceDeclaration() et addExtraNamespaceDeclarations().

QStringView QXmlStreamReader::namespaceUri() const

Renvoie le namespaceUri d'un StartElement ou d'un EndElement.

Voir aussi name() et qualifiedName().

QXmlStreamNotationDeclarations QXmlStreamReader::notationDeclarations() const

Si 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 aussi name() et qualifiedName().

QStringView QXmlStreamReader::processingInstructionData() const

Renvoie les données d'un site ProcessingInstruction.

QStringView QXmlStreamReader::processingInstructionTarget() const

Renvoie la cible d'un ProcessingInstruction.

QStringView QXmlStreamReader::qualifiedName() const

Renvoie le nom qualifié d'un StartElement ou d'un 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 de deux points, puis du nom local de l'élément. Étant donné que le préfixe de l'espace de noms n'est pas unique (le même préfixe peut pointer vers différents espaces de noms et des préfixes différents peuvent pointer vers le même espace de noms), vous ne devez pas utiliser qualifiedName(), mais le nom résolu namespaceUri() et le nom local de l'attribut name().

Voir également name(), prefix() et namespaceUri().

void QXmlStreamReader::raiseError(const QString &message = QString())

Lance une erreur personnalisée avec une erreur optionnelle message.

Voir aussi error() et errorString().

QString QXmlStreamReader::readElementText(QXmlStreamReader::ReadElementTextBehaviour behaviour = ErrorOnUnexpectedElement)

Fonction de commodité à appeler dans le cas où un StartElement a été lu. Lit jusqu'au EndElement correspondant et renvoie tout le texte entre les deux. En l'absence d'erreur, l'élément courant (voir tokenType()) après avoir appelé cette fonction est EndElement.

La fonction concatène text() lorsqu'elle lit les jetons Characters ou EntityReference, mais ignore ProcessingInstruction et Comment. Si le jeton courant n'est pas StartElement, une chaîne vide est renvoyée.

Le behaviour définit ce qui se passe au cas où quelque chose d'autre est lu avant d'atteindre le EndElement. La fonction peut inclure le texte des éléments enfants (utile par exemple pour le HTML), ignorer les éléments enfants ou lever un 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, lorsqu'un error() est signalé par readNext(), il n'est plus possible de poursuivre la lecture du flux XML. Ensuite, atEnd() renvoie true, hasError() renvoie true, et cette fonction renvoie QXmlStreamReader::Invalid.

L'exception est lorsque error() renvoie PrematureEndOfDocumentError. Cette erreur est signalée lorsque la fin d'un morceau de XML par ailleurs bien formé est atteinte, mais que le morceau ne représente pas un document XML complet. Dans ce cas, l'analyse peut être reprise en appelant addData() pour ajouter le prochain morceau de XML, lorsque le flux est lu à partir d'un QByteArray, ou en attendant que d'autres données arrivent lorsque le flux est lu à partir d'un device().

Voir également tokenType() et tokenString().

bool QXmlStreamReader::readNextStartElement()

Lit jusqu'au prochain élément de départ à l'intérieur de l'élément actuel. Retourne true lorsqu'un élément de départ a été atteint. Lorsque l'élément de fin a été atteint, ou lorsqu'une erreur s'est produite, false est renvoyé.

L'élément courant est l'élément correspondant à l'élément de départ le plus récemment analysé et dont l'élément de fin correspondant n'a pas encore été atteint. Lorsque l'analyseur syntaxique a atteint l'élément final, l'élément courant devient l'élément parent.

Il s'agit d'une fonction de commodité pour les cas où vous n'êtes concerné que par l'analyse des éléments XML. L'exemple des signets QXmlStream fait un usage intensif de cette fonction.

Voir également readNext().

[since 6.10] QString QXmlStreamReader::readRawInnerData()

Lit et renvoie le contenu XML interne brut de l'élément actuel. Cette fonction est utile pour récupérer le contenu complet intégré dans un élément, y compris les balises imbriquées, le texte, les commentaires, les instructions de traitement, les sections CDATA et d'autres balises - en préservant la structure XML d'origine.

L'élément actuel est l'élément correspondant à l'élément de départ le plus récemment analysé et dont l'élément final correspondant n'a pas encore été atteint. Lorsque l'analyseur syntaxique a atteint l'élément final, l'élément courant devient l'élément parent.

Remarque : les références aux entités définies dans la DTD sont résolues pendant l'analyse et renvoyées en texte brut, car les déclarations de la 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 (&lt;, &gt;, &amp;, &apos;, &quot;) sont ré-escapté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 à device. La définition du périphérique réinitialise le flux à son état initial.

Voir aussi device() et clear().

void QXmlStreamReader::setEntityExpansionLimit(int limit)

Fixe la quantité maximale de caractères qu'une entité unique est autorisée à développer à limit. Si une entité unique se développe au-delà de la limite donnée, le document n'est pas considéré comme bien formé.

Cette limite a pour but de prévenir les attaques DoS lors du chargement de documents XML inconnus dans lesquels l'expansion récursive des entités pourrait épuiser toute la mémoire disponible.

La valeur par défaut de cette propriété est de 4096 caractères.

Voir aussi entityExpansionLimit.

void QXmlStreamReader::setEntityResolver(QXmlStreamEntityResolver *resolver)

Fait de resolver le nouveau entityResolver().

Le lecteur de flux n'est pas propriétaire 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 nullptr soit défini.

Voir également entityResolver().

void QXmlStreamReader::skipCurrentElement()

Lit jusqu'à la fin de l'élément courant, en ignorant les nœuds enfants. Cette fonction est utile pour sauter des éléments inconnus.

L'élément courant est l'élément correspondant à l'élément de départ le plus récemment analysé et dont l'élément final correspondant n'a pas encore été atteint. Lorsque l'analyseur syntaxique a atteint l'élément final, 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 jeton 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 de commodité 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.