Flux XML
Qt fournit deux classes pour lire et écrire du XML à travers une API de flux simple : QXmlStreamReader et QXmlStreamWriter. Ces classes sont situées dans Qt Serialization (partie de QtCore).
Un lecteur de flux rapporte un document XML sous la forme d'un flux de jetons. Cela diffère de SAX, car les applications SAX fournissent des gestionnaires pour recevoir les événements XML de l'analyseur, tandis que QXmlStreamReader conduit la boucle, en tirant des jetons du lecteur lorsqu'ils sont nécessaires. Cette approche permet de construire des analyseurs descendants récursifs, ce qui permet de diviser le code d'analyse XML en différentes méthodes ou classes.
QXmlStreamReader est un analyseur syntaxique XML 1.0 bien formé qui exclut les entités externes analysées. Par conséquent, les données fournies par le lecteur de flux respectent les critères du W3C pour un XML bien formé, tant qu'aucune erreur ne se produit. Dans le cas contraire, des fonctions telles que atEnd(), error() et hasError() peuvent être utilisées pour vérifier et afficher les erreurs.
Un exemple d'implémentation qui utilise QXmlStreamReader serait le XbelReader dans QXmlStream Bookmarks Example, qui enveloppe un QXmlStreamReader. Lisez l'implémentation pour en savoir plus sur la façon d'utiliser la classe QXmlStreamReader.
Associée à QXmlStreamReader, la classe QXmlStreamWriter fournit un rédacteur XML avec une API de flux simple. QXmlStreamWriter fonctionne sur QIODevice et possède des fonctions spécialisées pour tous les jetons ou événements XML que vous souhaitez écrire, tels que writeDTD(), writeCharacters(), writeComment() et ainsi de suite.
Pour écrire un document XML avec QXmlStreamWriter, vous commencez un document avec la fonction writeStartDocument() et le terminez avec writeEndDocument(), qui ferme implicitement toutes les balises ouvertes restantes. Les balises d'éléments sont ouvertes par writeStartDocument() et suivies par writeAttribute() ou writeAttributes(), le contenu de l'élément, puis writeEndDocument(). De même, writeEmptyElement() peut être utilisé pour écrire des éléments vides.
Le contenu d'un élément comprend des caractères, des références d'entités ou des éléments imbriqués. Le contenu peut être écrit avec writeCharacters(), une fonction qui se charge également d'échapper tous les caractères et séquences de caractères interdits, writeEntityReference(), ou des appels ultérieurs à writeStartElement().
La classe XbelWriter de l'exemple de signets QXmlStream englobe une classe QXmlStreamWriter. Consultez l'implémentation pour voir comment utiliser la classe QXmlStreamWriter.
© 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.