Flux XML
Qt fournit deux classes permettant de lire et d'écrire du XML via une API de streaming simple : QXmlStreamReader et QXmlStreamWriter. Ces classes se trouvent dans Qt Serialization (qui fait partie de QtCore).
Un lecteur de flux présente un document XML sous la forme d’un flux de tokens. Cela diffère de SAX, car les applications SAX fournissent des gestionnaires pour recevoir les événements XML provenant de l’analyseur, tandis que la classe QXmlStreamReader pilote la boucle, extrayant les tokens du lecteur au fur et à mesure des besoins. Cette approche par extraction permet de construire des analyseurs récursifs descendants, ce qui permet de diviser le code d’analyse XML en différentes méthodes ou classes.
QXmlStreamReader est un analyseur XML 1.0 bien formé qui exclut les entités analysées externes. 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 utilisant ` QXmlStreamReader ` serait le `XbelReader` dans l'exemple « QXmlStream Bookmarks », qui encapsule un ` QXmlStreamReader`. Consultez l'implémentation pour en savoir plus sur l'utilisation de la classe ` QXmlStreamReader `.
La classe ` QXmlStreamReader ` est associée à la classe ` QXmlStreamWriter `, qui fournit à un générateur XML une API de streaming simple. ` QXmlStreamWriter ` opère sur un ` QIODevice ` et dispose de fonctions spécialisées pour tous les tokens ou événements XML que vous souhaitez écrire, telles que ` writeDTD()`, ` writeCharacters()`, ` writeComment()`, etc.
Pour écrire un document XML avec QXmlStreamWriter, vous commencez un document avec la fonction writeStartDocument() et le terminez avec writeEndDocument(), ce qui ferme implicitement toutes les balises encore ouvertes. Les balises d’élément sont ouvertes avec writeStartDocument() et suivies de writeAttribute() ou writeAttributes(), du contenu de l’élément, puis de writeEndDocument(). De plus, 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 à l’aide de ` writeCharacters()` (une fonction qui se charge également d’échapper tous les caractères et séquences de caractères interdits), de ` writeEntityReference()`, ou d’appels successifs à ` writeStartElement()`.
La classe `XbelWriter ` de l'exemple « Bookmarks » de QXmlStream encapsule un objet ` QXmlStreamWriter`. Consultez l'implémentation pour découvrir 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.