XML-Streaming
Qt bietet zwei Klassen zum Lesen und Schreiben von XML über eine einfache Streaming-API: QXmlStreamReader und QXmlStreamWriter. Diese Klassen befinden sich in Qt Serialization (Teil von QtCore).
Ein Stream-Reader meldet ein XML-Dokument als einen Strom von Token. Dies unterscheidet sich von SAX, da SAX-Anwendungen Handler bereitstellen, um XML-Ereignisse vom Parser zu empfangen, während QXmlStreamReader die Schleife antreibt und Token vom Reader abruft, wenn sie benötigt werden. Dieser Pulling-Ansatz macht es möglich, rekursive Descent-Parser zu bauen, so dass der XML-Parsing-Code in verschiedene Methoden oder Klassen aufgeteilt werden kann.
QXmlStreamReader ist ein wohlgeformter XML-1.0-Parser, der externe geparste Entitäten ausschließt. Daher entsprechen die vom Stream-Reader bereitgestellten Daten den W3C-Kriterien für wohlgeformtes XML, solange kein Fehler auftritt. Andernfalls können Funktionen wie atEnd(), error() und hasError() verwendet werden, um die Fehler zu überprüfen und anzuzeigen.
Ein Beispiel für eine Implementierung, die QXmlStreamReader verwendet, wäre der XbelReader in QXmlStream Bookmarks Example, der eine QXmlStreamReader umhüllt. Lesen Sie die Implementierung, um mehr über die Verwendung der Klasse QXmlStreamReader zu erfahren.
Gepaart mit QXmlStreamReader ist die Klasse QXmlStreamWriter, die einen XML-Writer mit einer einfachen Streaming-API zur Verfügung stellt. QXmlStreamWriter arbeitet auf einer QIODevice und hat spezielle Funktionen für alle XML-Token oder Ereignisse, die Sie schreiben möchten, wie writeDTD(), writeCharacters(), writeComment() und so weiter.
Um ein XML-Dokument mit QXmlStreamWriter zu schreiben, beginnen Sie ein Dokument mit der Funktion writeStartDocument() und beenden es mit writeEndDocument(), wodurch alle verbleibenden offenen Tags implizit geschlossen werden. Element-Tags werden mit writeStartDocument() geöffnet, gefolgt von writeAttribute() oder writeAttributes(), Elementinhalt und dann writeEndDocument(). Auch writeEmptyElement() kann verwendet werden, um leere Elemente zu schreiben.
Der Elementinhalt besteht aus Zeichen, Entity-Referenzen oder verschachtelten Elementen. Der Inhalt kann mit writeCharacters() geschrieben werden, einer Funktion, die sich auch um das Escaping aller verbotenen Zeichen und Zeichenfolgen kümmert, writeEntityReference(), oder mit nachfolgenden Aufrufen von writeStartElement().
Die Klasse XbelWriter aus QXmlStream Bookmarks Example umhüllt eine QXmlStreamWriter. Sehen Sie sich die Implementierung an, um zu erfahren, wie Sie die Klasse QXmlStreamWriter verwenden können.
© 2025 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.