QXmlInputSource Class

Die Klasse QXmlInputSource liefert die Eingabedaten für die Unterklassen von QXmlReader. Mehr...

Kopfzeile: #include <QXmlInputSource>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core5Compat)
target_link_libraries(mytarget PRIVATE Qt6::Core5Compat)
qmake: QT += core5compat

Hinweis: Alle Funktionen in dieser Klasse sind reentrant.

Öffentliche Funktionen

QXmlInputSource()
QXmlInputSource(QIODevice *dev)
virtual ~QXmlInputSource()
virtual QString data() const
virtual void fetchData()
virtual QChar next()
virtual void reset()
virtual void setData(const QString &dat)
virtual void setData(const QByteArray &dat)

Geschützte Funktionen

virtual QString fromRawData(const QByteArray &data, bool beginning = false)

Detaillierte Beschreibung

Alle Unterklassen von QXmlReader lesen das Eingabe-XML-Dokument von dieser Klasse.

Diese Klasse erkennt die Kodierung der Daten, indem sie die Kodierungsdeklaration in der XML-Datei liest, wenn sie eine findet, und die Daten unter Verwendung der entsprechenden Kodierung liest. Findet sie keine Encoding-Deklaration, geht sie davon aus, dass die Daten entweder in UTF-8 oder UTF-16 vorliegen, je nachdem, ob sie eine Byte-Order-Marke findet.

Es gibt zwei Möglichkeiten, die Eingabequelle mit Daten zu füllen: Sie können sie mit einem QIODevice* konstruieren, so dass die Eingabequelle die Daten von diesem Gerät liest. Oder Sie können die Daten explizit mit einer der setData() Funktionen setzen.

Normalerweise konstruieren Sie entweder eine QXmlInputSource, die mit einer QIODevice* arbeitet, oder Sie konstruieren eine leere QXmlInputSource und setzen die Daten mit setData(). Es gibt nur seltene Gelegenheiten, in denen man beide Methoden mischen möchte.

Die QXmlReader Unterklassen verwenden die Funktion next(), um die Eingabe zeichenweise zu lesen. Wenn Sie wieder von vorne beginnen wollen, verwenden Sie reset().

Die Funktionen data() und fetchData() sind nützlich, wenn Sie etwas anderes mit den Daten machen wollen als das Parsen, z. B. das Anzeigen der rohen XML-Datei. Der Vorteil der Verwendung der QXmlInputClass in solchen Fällen ist, dass sie versucht, die richtige Kodierung zu verwenden.

Siehe auch QXmlReader und QXmlSimpleReader.

Dokumentation der Mitgliedsfunktionen

QXmlInputSource::QXmlInputSource()

Konstruiert eine Eingabequelle, die keine Daten enthält.

Siehe auch setData().

[explicit] QXmlInputSource::QXmlInputSource(QIODevice *dev)

Konstruiert eine Eingabequelle und holt die Daten vom Gerät dev. Wenn dev nicht geöffnet ist, wird es im Nur-Lese-Modus geöffnet. Wenn dev gleich 0 ist oder es nicht möglich ist, von dem Gerät zu lesen, enthält die Eingabequelle keine Daten.

Siehe auch setData(), fetchData(), und QIODevice.

[virtual noexcept] QXmlInputSource::~QXmlInputSource()

Zerstörer.

[virtual] QString QXmlInputSource::data() const

Gibt die Daten zurück, die die Eingabequelle enthält, oder einen leeren String, wenn die Eingabequelle keine Daten enthält.

Siehe auch setData(), QXmlInputSource(), und fetchData().

[virtual] void QXmlInputSource::fetchData()

Diese Funktion liest weitere Daten aus dem Gerät, die während der Konstruktion eingestellt wurden. Wenn die Eingabequelle bereits Daten enthielt, löscht diese Funktion diese Daten zuerst.

Das Objekt enthält nach einem Aufruf dieser Funktion keine Daten, wenn das Objekt ohne ein Gerät konstruiert wurde, von dem Daten gelesen werden können, oder wenn diese Funktion nicht in der Lage war, weitere Daten von dem Gerät zu holen.

Es gibt zwei Gelegenheiten, bei denen ein Fetch implizit durch einen anderen Funktionsaufruf durchgeführt wird: während der Konstruktion (damit das Objekt mit einigen Anfangsdaten beginnt, sofern vorhanden) und während eines Aufrufs von next() (wenn die Daten ausgegangen sind).

Sie brauchen diese Funktion normalerweise nicht zu verwenden, wenn Sie next() benutzen.

Siehe auch data(), next(), und QXmlInputSource().

[virtual protected] QString QXmlInputSource::fromRawData(const QByteArray &data, bool beginning = false)

Diese Funktion liest die XML-Datei von data und versucht, die Kodierung zu erkennen. Sie wandelt die Rohdaten data in eine QString um und gibt sie zurück. Sie versucht ihr Bestes, um die richtige Kodierung für die XML-Datei zu erhalten.

Wenn beginning wahr ist, geht diese Funktion davon aus, dass die Daten am Anfang eines neuen XML-Dokuments beginnen und sucht nach einer Kodierungsdeklaration. Wenn beginning falsch ist, konvertiert sie die Rohdaten unter Verwendung der aus früheren Aufrufen ermittelten Kodierung.

[virtual] QChar QXmlInputSource::next()

Gibt das nächste Zeichen der Eingabequelle zurück. Wenn diese Funktion das Ende der verfügbaren Daten erreicht, gibt sie QXmlInputSource::EndOfData zurück. Wenn Sie danach next() aufrufen, versucht sie, durch den Aufruf von fetchData() weitere Daten zu holen. Wenn der Aufruf fetchData() zu neuen Daten führt, gibt diese Funktion das erste Zeichen dieser Daten zurück; andernfalls gibt sie QXmlInputSource::EndOfDocument zurück.

Leseprogramme wie QXmlSimpleReader gehen davon aus, dass das Ende des XML-Dokuments erreicht ist, wenn diese Funktion QXmlInputSource::EndOfDocument zurückgibt, und prüfen, ob die übergebene Eingabe wohlgeformt ist. Daher ist es wichtig, bei der Neuimplementierung dieser Funktion sicherzustellen, dass dieses Verhalten dupliziert wird.

Siehe auch reset(), fetchData(), QXmlSimpleReader::parse(), und QXmlSimpleReader::parseContinue().

[virtual] void QXmlInputSource::reset()

Diese Funktion setzt die von next() verwendete Position auf den Anfang der von data() zurückgegebenen Daten. Dies ist nützlich, wenn Sie die Eingabequelle für mehr als einen Parse verwenden wollen.

Hinweis: Wenn die zugrunde liegende Datenquelle QIODevice ist, wird die aktuelle Position im Gerät nicht automatisch auf den Beginn der Eingabe gesetzt. Rufen Sie QIODevice::seek(0) auf dem Gerät auf, um dies zu tun.

Siehe auch next().

[virtual] void QXmlInputSource::setData(const QString &dat)

Setzt die Daten der Eingabequelle auf dat.

Wenn die Eingabequelle bereits Daten enthält, löscht diese Funktion zuerst diese Daten.

Siehe auch data().

[virtual] void QXmlInputSource::setData(const QByteArray &dat)

Dies ist eine überladene Funktion.

Die Daten dat werden durch den richtigen Text-Codec geleitet, bevor sie gesetzt werden.

© 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.