QXmlStreamWriter Class
Die Klasse QXmlStreamWriter bietet einen XML-Writer mit einer einfachen Streaming-API. Mehr...
Kopfzeile: | #include <QXmlStreamWriter> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QXmlStreamWriter ist Teil von XML Classes.
Hinweis: Alle Funktionen in dieser Klasse sind reentrant.
Eigenschaften
- autoFormatting : bool
- autoFormattingIndent : int
Öffentliche Funktionen
QXmlStreamWriter() | |
QXmlStreamWriter(QByteArray *array) | |
QXmlStreamWriter(QIODevice *device) | |
QXmlStreamWriter(QString *string) | |
~QXmlStreamWriter() | |
bool | autoFormatting() const |
int | autoFormattingIndent() const |
QIODevice * | device() const |
bool | hasError() const |
void | setAutoFormatting(bool enable) |
void | setAutoFormattingIndent(int spacesOrTabs) |
void | setDevice(QIODevice *device) |
void | writeAttribute(QAnyStringView namespaceUri, QAnyStringView name, QAnyStringView value) |
void | writeAttribute(const QXmlStreamAttribute &attribute) |
void | writeAttribute(QAnyStringView qualifiedName, QAnyStringView value) |
void | writeAttributes(const QXmlStreamAttributes &attributes) |
void | writeCDATA(QAnyStringView text) |
void | writeCharacters(QAnyStringView text) |
void | writeComment(QAnyStringView text) |
void | writeCurrentToken(const QXmlStreamReader &reader) |
void | writeDTD(QAnyStringView dtd) |
void | writeDefaultNamespace(QAnyStringView namespaceUri) |
void | writeEmptyElement(QAnyStringView namespaceUri, QAnyStringView name) |
void | writeEmptyElement(QAnyStringView qualifiedName) |
void | writeEndDocument() |
void | writeEndElement() |
void | writeEntityReference(QAnyStringView name) |
void | writeNamespace(QAnyStringView namespaceUri, QAnyStringView prefix = {}) |
void | writeProcessingInstruction(QAnyStringView target, QAnyStringView data = {}) |
void | writeStartDocument(QAnyStringView version) |
void | writeStartDocument(QAnyStringView version, bool standalone) |
void | writeStartDocument() |
void | writeStartElement(QAnyStringView namespaceUri, QAnyStringView name) |
void | writeStartElement(QAnyStringView qualifiedName) |
void | writeTextElement(QAnyStringView namespaceUri, QAnyStringView name, QAnyStringView text) |
void | writeTextElement(QAnyStringView qualifiedName, QAnyStringView text) |
Detaillierte Beschreibung
QXmlStreamWriter ist das Gegenstück zu QXmlStreamReader zum Schreiben von XML. Wie seine verwandte Klasse arbeitet er mit einer QIODevice, die mit setDevice() angegeben wird. Die API ist einfach und geradlinig: für jedes XML-Token oder Ereignis, das Sie schreiben wollen, bietet der Writer eine spezielle Funktion.
Sie beginnen ein Dokument mit writeStartDocument() und beenden es mit writeEndDocument(). Dadurch werden implizit alle verbleibenden offenen Tags geschlossen.
Element-Tags werden mit writeStartElement() geöffnet, gefolgt von writeAttribute() oder writeAttributes(), Elementinhalt und dann writeEndElement(). Eine kürzere Form writeEmptyElement() kann verwendet werden, um leere Elemente zu schreiben, gefolgt von writeAttributes().
Der Elementinhalt besteht entweder aus Zeichen, Entity-Referenzen oder verschachtelten Elementen. Er wird mit writeCharacters() geschrieben, das sich auch um das Escaping aller verbotenen Zeichen und Zeichenfolgen kümmert, writeEntityReference() oder nachfolgenden Aufrufen von writeStartElement(). Für das Schreiben von Terminalelementen, die nichts anderes als Text enthalten, kann eine Komfortmethode writeTextElement() verwendet werden.
Der folgende verkürzte Codeausschnitt zeigt die grundlegende Verwendung der Klasse zum Schreiben von formatiertem XML mit Einrückung:
QXmlStreamWriter stream(&output); stream.setAutoFormatting(true); stream.writeStartDocument(); ... stream.writeStartElement("bookmark"); stream.writeAttribute("href", "http://qt-project.org/"); stream.writeTextElement("title", "Qt Project"); stream.writeEndElement(); // bookmark ... stream.writeEndDocument();
QXmlStreamWriter kümmert sich um die Präfixierung von Namespaces, Sie müssen nur die namespaceUri
angeben, wenn Sie Elemente oder Attribute schreiben. Wenn Sie sich an bestimmte Präfixe halten müssen, können Sie den Writer zwingen, diese zu verwenden, indem Sie die Namespaces entweder mit writeNamespace() oder writeDefaultNamespace() manuell deklarieren. Alternativ dazu können Sie die Namespace-Unterstützung des Stream-Writers umgehen und stattdessen überladene Methoden verwenden, die einen qualifizierten Namen annehmen. Der Namespace http://www.w3.org/XML/1998/namespace ist implizit und wird auf das Präfix xml abgebildet.
Der Stream-Writer kann die generierten XML-Daten automatisch formatieren, indem er leere Abschnitte zwischen den Elementen mit Zeilenumbrüchen und Einrückungen versieht, wodurch die XML-Daten für Menschen besser lesbar und für die meisten Quellcode-Verwaltungssysteme einfacher zu verarbeiten sind. Die Funktion kann mit der Eigenschaft autoFormatting aktiviert und mit der Eigenschaft autoFormattingIndent angepasst werden.
Weitere Funktionen sind writeCDATA(), writeComment(), writeProcessingInstruction(), und writeDTD(). Die Verkettung von XML-Streams wird mit writeCurrentToken() unterstützt.
QXmlStreamWriter kodiert XML immer in UTF-8.
Wenn beim Schreiben auf das zugrunde liegende Gerät ein Fehler auftritt, gibt hasError() zunächst true zurück und nachfolgende Schreibvorgänge werden ignoriert.
Das QXmlStream Bookmarks Beispiel veranschaulicht die Verwendung eines StreamWriters zum Schreiben einer XML-Lesezeichendatei (XBEL), die zuvor von einem QXmlStreamReader eingelesen wurde.
Dokumentation der Eigenschaft
autoFormatting : bool
Diese Eigenschaft enthält das Auto-Formatierungs-Flag des Stream-Writers.
Diese Eigenschaft steuert, ob der Stream-Writer die generierten XML-Daten automatisch formatiert oder nicht. Wenn sie aktiviert ist, fügt der Writer automatisch Zeilenumbrüche und Einrückungen in leere Abschnitte zwischen Elementen ein (ignorierbarer Whitespace). Der Hauptzweck der automatischen Formatierung besteht darin, die Daten in mehrere Zeilen aufzuteilen und die Lesbarkeit für einen menschlichen Leser zu erhöhen. Die Tiefe der Einrückung kann über die Eigenschaft autoFormattingIndent gesteuert werden.
Standardmäßig ist die automatische Formatierung deaktiviert.
Zugriffsfunktionen:
bool | autoFormatting() const |
void | setAutoFormatting(bool enable) |
autoFormattingIndent : int
Diese Eigenschaft gibt die Anzahl der Leerzeichen oder Tabulatoren an, die für die Einrückung verwendet werden, wenn die automatische Formatierung aktiviert ist. Positive Zahlen bedeuten Leerzeichen, negative Zahlen Tabulatoren.
Die Standardeinrückung ist 4.
Zugriffsfunktionen:
int | autoFormattingIndent() const |
void | setAutoFormattingIndent(int spacesOrTabs) |
Siehe auch autoFormatting.
Dokumentation der Mitgliedsfunktionen
QXmlStreamWriter::QXmlStreamWriter()
Konstruiert einen Stream-Writer.
Siehe auch setDevice().
[explicit]
QXmlStreamWriter::QXmlStreamWriter(QByteArray *array)
Konstruiert einen Stream-Writer, der in array schreibt. Dies ist dasselbe wie das Erstellen eines xml-Writers, der auf einem QBuffer -Gerät arbeitet, das wiederum auf array arbeitet.
[explicit]
QXmlStreamWriter::QXmlStreamWriter(QIODevice *device)
Konstruiert einen Stream-Writer, der in device schreibt;
[explicit]
QXmlStreamWriter::QXmlStreamWriter(QString *string)
Konstruiert einen Stream-Writer, der in string schreibt.
[noexcept]
QXmlStreamWriter::~QXmlStreamWriter()
Zerstörer.
bool QXmlStreamWriter::autoFormatting() const
Gibt true
zurück, wenn die automatische Formatierung aktiviert ist, andernfalls false
.
Hinweis: Getter-Funktion für die Eigenschaft autoFormatting.
Siehe auch setAutoFormatting().
QIODevice *QXmlStreamWriter::device() const
Gibt das aktuelle Gerät zurück, das dem QXmlStreamWriter zugeordnet ist, oder nullptr
, wenn kein Gerät zugewiesen wurde.
Siehe auch setDevice().
bool QXmlStreamWriter::hasError() const
Gibt true
zurück, wenn das Schreiben fehlgeschlagen ist.
Dies kann der Fall sein, wenn der Stream nicht in das zugrunde liegende Gerät schreiben konnte oder wenn die zu schreibenden Daten ungültige Zeichen enthalten.
Der Fehlerstatus wird nie zurückgesetzt. Schreibvorgänge, die nach dem Auftreten des Fehlers erfolgen, können ignoriert werden, selbst wenn die Fehlerbedingung gelöscht wird.
void QXmlStreamWriter::setAutoFormatting(bool enable)
Aktiviert die automatische Formatierung, wenn enable gleich true
ist, andernfalls wird sie deaktiviert.
Der Standardwert ist false
.
Hinweis: Setter-Funktion für die Eigenschaft autoFormatting.
Siehe auch autoFormatting().
void QXmlStreamWriter::setDevice(QIODevice *device)
Setzt das aktuelle Gerät auf device. Wenn Sie möchten, dass der Stream in ein QByteArray schreibt, können Sie ein QBuffer Gerät erstellen.
Siehe auch device().
void QXmlStreamWriter::writeAttribute(QAnyStringView namespaceUri, QAnyStringView name, QAnyStringView value)
Schreibt ein Attribut mit name und value, das dem angegebenen namespaceUri vorangestellt wird. Wenn der Namespace noch nicht deklariert wurde, erzeugt QXmlStreamWriter eine Namespace-Deklaration für ihn.
Diese Funktion kann nur nach writeStartElement() aufgerufen werden, bevor irgendein Inhalt geschrieben wird, oder nach writeEmptyElement().
Hinweis: In Qt-Versionen vor 6.5 nahm diese Funktion QString und nicht QAnyStringView.
void QXmlStreamWriter::writeAttribute(const QXmlStreamAttribute &attribute)
Dies ist eine überladene Funktion.
Schreibt die attribute.
Diese Funktion kann nur nach writeStartElement() aufgerufen werden, bevor ein Inhalt geschrieben wird, oder nach writeEmptyElement().
void QXmlStreamWriter::writeAttribute(QAnyStringView qualifiedName, QAnyStringView value)
Dies ist eine überladene Funktion.
Schreibt ein Attribut mit qualifiedName und value.
Diese Funktion kann nur nach writeStartElement() aufgerufen werden, bevor irgendein Inhalt geschrieben wird, oder nach writeEmptyElement().
Hinweis: In Qt-Versionen vor 6.5 nahm diese Funktion QString und nicht QAnyStringView.
void QXmlStreamWriter::writeAttributes(const QXmlStreamAttributes &attributes)
Schreibt den Attributvektor attributes. Wenn ein Namespace, auf den in einem Attribut verwiesen wird, noch nicht deklariert wurde, erzeugt QXmlStreamWriter eine Namespace-Deklaration für ihn.
Diese Funktion kann nur nach writeStartElement() aufgerufen werden, bevor irgendein Inhalt geschrieben wird, oder nach writeEmptyElement().
Siehe auch writeAttribute() und writeNamespace().
void QXmlStreamWriter::writeCDATA(QAnyStringView text)
Schreibt text als CDATA-Abschnitt. Wenn text die verbotene Zeichenfolge "]]>" enthält, wird es in verschiedene CDATA-Abschnitte aufgeteilt.
Diese Funktion dient hauptsächlich der Vollständigkeit halber. Normalerweise sollten Sie sie nicht benötigen, da writeCharacters() automatisch alle Zeichen, die nicht zum Inhalt gehören, umgeht.
Hinweis: In Qt-Versionen vor 6.5 nahm diese Funktion QString und nicht QAnyStringView.
void QXmlStreamWriter::writeCharacters(QAnyStringView text)
Es wird text geschrieben. Die Zeichen "<", "&" und """ werden als Entitätsreferenzen "<", "& und """ maskiert. Um die verbotene Sequenz "]]>" zu vermeiden, wird ">" auch als ">" entschlüsselt.
Hinweis: In Qt-Versionen vor 6.5 nahm diese Funktion QString und nicht QAnyStringView.
Siehe auch writeEntityReference().
void QXmlStreamWriter::writeComment(QAnyStringView text)
Schreibt text als XML-Kommentar, wobei text nicht die verbotene Sequenz --
enthalten oder mit -
enden darf. Beachten Sie, dass XML keine Möglichkeit bietet, -
in einem Kommentar zu entschlüsseln.
Hinweis: In Qt-Versionen vor 6.5 nahm diese Funktion QString und nicht QAnyStringView.
void QXmlStreamWriter::writeCurrentToken(const QXmlStreamReader &reader)
Schreibt den aktuellen Zustand des reader. Alle möglichen gültigen Zustände werden unterstützt.
Der Zweck dieser Funktion ist die Unterstützung der verketteten Verarbeitung von XML-Daten.
Siehe auch QXmlStreamReader::tokenType().
void QXmlStreamWriter::writeDTD(QAnyStringView dtd)
Schreibt einen DTD-Abschnitt. Die dtd repräsentiert die gesamte doctypedecl-Produktion aus der XML 1.0-Spezifikation.
Hinweis: In Qt-Versionen vor 6.5 nahm diese Funktion QString und nicht QAnyStringView.
void QXmlStreamWriter::writeDefaultNamespace(QAnyStringView namespaceUri)
Schreibt eine Standard-Namensraumdeklaration für namespaceUri.
Wenn writeStartElement() oder writeEmptyElement() aufgerufen wurde, gilt die Deklaration für das aktuelle Element; andernfalls gilt sie für das nächste Kindelement.
Beachten Sie, dass die Namespaces http://www.w3.org/XML/1998/namespace (gebunden an xmlns) und http://www.w3.org/2000/xmlns/ (gebunden an xml) per Definition nicht als Standard deklariert werden können.
Hinweis: In Qt-Versionen vor 6.5 nahm diese Funktion QString und nicht QAnyStringView.
void QXmlStreamWriter::writeEmptyElement(QAnyStringView namespaceUri, QAnyStringView name)
Schreibt ein leeres Element mit name, das für den angegebenen namespaceUri vorangestellt wird. Wenn der Namespace nicht deklariert wurde, erzeugt QXmlStreamWriter eine Namespace-Deklaration für ihn. Nachfolgende Aufrufe von writeAttribute() fügen Attribute zu diesem Element hinzu.
Hinweis: In Qt-Versionen vor 6.5 nahm diese Funktion QString und nicht QAnyStringView.
Siehe auch writeNamespace().
void QXmlStreamWriter::writeEmptyElement(QAnyStringView qualifiedName)
Dies ist eine überladene Funktion.
Schreibt ein leeres Element mit dem qualifizierten Namen qualifiedName. Nachfolgende Aufrufe von writeAttribute() fügen Attribute zu diesem Element hinzu.
Hinweis: In Qt-Versionen vor 6.5 nahm diese Funktion QString und nicht QAnyStringView.
void QXmlStreamWriter::writeEndDocument()
Schließt alle verbleibenden offenen Startelemente und schreibt einen Zeilenumbruch.
Siehe auch writeStartDocument().
void QXmlStreamWriter::writeEndElement()
Schließt das vorherige Startelement.
Siehe auch writeStartElement().
void QXmlStreamWriter::writeEntityReference(QAnyStringView name)
Schreibt die Entity-Referenz name in den Stream, als "&name;".
Hinweis: In Qt-Versionen vor 6.5 nahm diese Funktion QString und nicht QAnyStringView.
void QXmlStreamWriter::writeNamespace(QAnyStringView namespaceUri, QAnyStringView prefix = {})
Schreibt eine Namespace-Deklaration für namespaceUri mit prefix. Wenn prefix leer ist, weist QXmlStreamWriter ein eindeutiges Präfix zu, das aus dem Buchstaben 'n' gefolgt von einer Zahl besteht.
Wenn writeStartElement() oder writeEmptyElement() aufgerufen wurde, gilt die Deklaration für das aktuelle Element; andernfalls gilt sie für das nächste Kindelement.
Beachten Sie, dass das Präfix xml sowohl vordefiniert als auch für http://www.w3.org/XML/1998/namespace reserviert ist, das seinerseits an kein anderes Präfix gebunden werden kann. Das Präfix xmlns und sein URI http://www.w3.org/2000/xmlns/ werden für den Namespace-Mechanismus selbst verwendet und sind daher in Deklarationen komplett verboten.
Hinweis: In Qt-Versionen vor 6.5 nahm diese Funktion QString und nicht QAnyStringView.
void QXmlStreamWriter::writeProcessingInstruction(QAnyStringView target, QAnyStringView data = {})
Schreibt eine XML-Verarbeitungsanweisung mit target und data, wobei data nicht die Sequenz "?>" enthalten darf.
Hinweis: In Qt-Versionen vor 6.5 nahm diese Funktion QString und nicht QAnyStringView.
void QXmlStreamWriter::writeStartDocument(QAnyStringView version)
Schreibt ein Dokument, das mit der XML-Versionsnummer version beginnt.
Hinweis: In Qt-Versionen vor 6.5 nahm diese Funktion QString und nicht QAnyStringView.
Siehe auch writeEndDocument().
void QXmlStreamWriter::writeStartDocument(QAnyStringView version, bool standalone)
Schreibt einen Dokumentanfang mit der XML-Versionsnummer version und einem eigenständigen Attribut standalone.
Hinweis: In Qt-Versionen vor 6.5 nahm diese Funktion QString und nicht QAnyStringView.
Siehe auch writeEndDocument().
void QXmlStreamWriter::writeStartDocument()
Dies ist eine überladene Funktion.
Schreibt ein Dokument mit der XML-Versionsnummer "1.0".
Siehe auch writeEndDocument().
void QXmlStreamWriter::writeStartElement(QAnyStringView namespaceUri, QAnyStringView name)
Schreibt ein Startelement mit name, das dem angegebenen namespaceUri vorangestellt wird. Wenn der Namespace noch nicht deklariert wurde, erzeugt QXmlStreamWriter eine Namespace-Deklaration für ihn. Nachfolgende Aufrufe von writeAttribute() fügen Attribute zu diesem Element hinzu.
Hinweis: In Qt-Versionen vor 6.5 nahm diese Funktion QString und nicht QAnyStringView.
Siehe auch writeNamespace(), writeEndElement(), und writeEmptyElement().
void QXmlStreamWriter::writeStartElement(QAnyStringView qualifiedName)
Dies ist eine überladene Funktion.
Schreibt ein Startelement mit qualifiedName. Nachfolgende Aufrufe von writeAttribute() fügen Attribute zu diesem Element hinzu.
Hinweis: In Qt-Versionen vor 6.5 nahm diese Funktion QString und nicht QAnyStringView.
Siehe auch writeEndElement() und writeEmptyElement().
void QXmlStreamWriter::writeTextElement(QAnyStringView namespaceUri, QAnyStringView name, QAnyStringView text)
Schreibt ein Textelement mit name, mit dem Präfix für den angegebenen namespaceUri und text. Wenn der Namensraum nicht deklariert wurde, erzeugt QXmlStreamWriter eine Namensraumdeklaration für ihn.
Dies ist eine Komfortfunktion, die äquivalent zu ist:
writeStartElement(namespaceUri, name);
writeCharacters(text);
writeEndElement();
Hinweis: In Qt-Versionen vor 6.5 nahm diese Funktion QString, nicht QAnyStringView.
void QXmlStreamWriter::writeTextElement(QAnyStringView qualifiedName, QAnyStringView text)
Dies ist eine überladene Funktion.
Schreibt ein Textelement mit qualifiedName und text.
Dies ist eine Komfortfunktion, die äquivalent zu ist:
writeStartElement(qualifiedName); writeCharacters(text); writeEndElement();
Hinweis: In Qt-Versionen vor 6.5 nahm diese Funktion QString und nicht QAnyStringView.
© 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.