XML-Streaming
Qt stellt zwei Klassen zum Lesen und Schreiben von XML über eine einfache Streaming-API bereit: „ QXmlStreamReader “ und „ QXmlStreamWriter “. Diese Klassen befinden sich in Qt Serialization (Teil von QtCore).
Ein Stream-Reader gibt ein XML-Dokument als Strom von Tokens zurück. Dies unterscheidet sich von SAX, da SAX-Anwendungen Handler bereitstellen, um XML-Ereignisse vom Parser zu empfangen, während der ` QXmlStreamReader ` die Schleife steuert und Tokens bei Bedarf vom Reader abruft. Dieser „Pulling“-Ansatz ermöglicht die Erstellung rekursiver Abwärtsparser, wodurch der XML-Parsing-Code in verschiedene Methoden oder Klassen aufgeteilt werden kann.
QXmlStreamReader ist ein Parser für wohlgeformtes XML 1.0, 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 im Beispiel „QXmlStream Bookmarks“, der einen QXmlStreamReader umschließt. Lesen Sie die Implementierung, um mehr über die Verwendung der Klasse QXmlStreamReader zu erfahren.
Mit „ QXmlStreamReader “ gepaart ist die Klasse „ QXmlStreamWriter “, die einem XML-Writer eine einfache Streaming-API bereitstellt. „ QXmlStreamWriter “ arbeitet mit einem „ QIODevice “ und verfügt über spezielle Funktionen für alle XML-Token oder -Ereignisse, die Sie schreiben möchten, wie beispielsweise „ 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()“, dem Elementinhalt und anschließend „ writeEndDocument()“. Außerdem kann „ writeEmptyElement()“ verwendet werden, um leere Elemente zu schreiben.
Der Elementinhalt besteht aus Zeichen, Entitätsreferenzen oder verschachtelten Elementen. Der Inhalt kann mit writeCharacters() geschrieben werden, einer Funktion, die sich auch um das Escapen aller verbotenen Zeichen und Zeichenfolgen kümmert, mit writeEntityReference() oder durch nachfolgende Aufrufe von writeStartElement().
Die Klasse `XbelWriter` aus dem Beispiel „QXmlStream Bookmarks“ umschließt ein ` QXmlStreamWriter`. Sehen Sie sich die Implementierung an, um zu erfahren, wie die Klasse ` QXmlStreamWriter ` verwendet wird.
© 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.