Auf dieser Seite

QXmlInputSource Class

Die Klasse „QXmlInputSource“ stellt die Eingabedaten für die Unterklassen von „ QXmlReader “ bereit. Mehr...

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

Hinweis: Alle Funktionen 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)

Ausführliche Beschreibung

Alle Unterklassen von „ QXmlReader “ lesen das XML-Eingabedokument aus dieser Klasse ein.

Diese Klasse erkennt die Kodierung der Daten, indem sie die Kodierungsdeklaration in der XML-Datei ausliest, sofern eine vorhanden ist, und die Daten unter Verwendung der entsprechenden Kodierung liest. Wird keine Kodierungsdeklaration gefunden, geht die Klasse davon aus, dass die Daten entweder in UTF-8 oder UTF-16 vorliegen, je nachdem, ob eine Byte-Order-Markierung gefunden wird.

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

In der Regel erstellen Sie entweder eine `QXmlInputSource`, die auf einem ` QIODevice*` basiert, oder Sie erstellen eine leere `QXmlInputSource` und legen die Daten mit ` setData()` fest. Nur in seltenen Fällen möchten Sie beide Methoden kombinieren.

Die Unterklassen von ` QXmlReader ` verwenden die Funktion ` next()` zum zeichenweisen Einlesen der Eingabe. Wenn Sie wieder von vorne beginnen möchten, verwenden Sie ` reset()`.

Die Funktionen ` data()` und ` fetchData()` sind nützlich, wenn Sie mit den Daten etwas anderes als das Parsen tun möchten, z. B. die Anzeige der rohen XML-Datei. Der Vorteil der Verwendung der `QXmlInputClass` in solchen Fällen besteht darin, dass sie versucht, die richtige Kodierung zu verwenden.

Siehe auch QXmlReader und QXmlSimpleReader.

Dokumentation zu den Mitgliedsfunktionen

QXmlInputSource::QXmlInputSource()

Erstellt eine Eingabequelle, die keine Daten enthält.

Siehe auch „ setData()“.

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

Erstellt eine Eingabequelle und ruft die Daten von der Geräteadresse dev ab. Falls dev nicht geöffnet ist, wird sie im schreibgeschützten Modus geöffnet. Falls dev den Wert 0 hat oder kein Lesen vom Gerät möglich ist, enthält die Eingabequelle keine Daten.

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

[virtual noexcept] QXmlInputSource::~QXmlInputSource()

Destruktor.

[virtual] QString QXmlInputSource::data() const

Gibt die Daten zurück, die die Eingabequelle enthält, oder eine leere Zeichenkette, falls 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 aus, das bei der Erstellung festgelegt wurde. Falls die Eingabequelle bereits Daten enthielt, löscht diese Funktion diese Daten zunächst.

Dieses Objekt enthält nach einem Aufruf dieser Funktion keine Daten, wenn das Objekt ohne ein Gerät erstellt wurde, aus dem Daten gelesen werden können, oder wenn diese Funktion keine weiteren Daten vom Gerät abrufen konnte.

Es gibt zwei Fälle, in denen ein Abruf implizit durch einen anderen Funktionsaufruf erfolgt: während der Erstellung (damit das Objekt, sofern verfügbar, mit einigen Anfangsdaten startet) und während eines Aufrufs von ` next()` (falls die Daten erschöpft waren).

Normalerweise müssen Sie diese Funktion nicht verwenden, wenn Sie ` next()` nutzen.

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

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

Diese Funktion liest die XML-Datei unter data ein und versucht, die Kodierung zu erkennen. Sie wandelt die Rohdaten data in ein QString um und gibt diese zurück. Sie versucht nach Kräften, die richtige Kodierung für die XML-Datei zu ermitteln.

Ist beginning wahr, geht diese Funktion davon aus, dass die Daten am Anfang eines neuen XML-Dokuments beginnen, und sucht nach einer Kodierungsdeklaration. Ist beginning falsch, 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. Erreicht diese Funktion das Ende der verfügbaren Daten, gibt sie `QXmlInputSource::EndOfData` zurück. Wird danach `next()` aufgerufen, wird versucht, weitere Daten abzurufen, indem ` fetchData()` aufgerufen wird. Wenn der Aufruf von ` fetchData()` neue Daten liefert, gibt diese Funktion das erste Zeichen dieser Daten zurück; andernfalls gibt sie `QXmlInputSource::EndOfDocument` zurück.

Leser, wie z. B. ` QXmlSimpleReader`, gehen davon aus, dass das Ende des XML-Dokuments erreicht wurde, wenn diese Funktion `QXmlInputSource::EndOfDocument` zurückgibt, und prüfen, ob die übergebene Eingabe wohlgeformt ist. Daher ist es bei der Neuimplementierung dieser Funktion wichtig, sicherzustellen, dass dieses Verhalten reproduziert 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 eine Analyse verwenden möchten.

Hinweis: Falls es sich bei der zugrunde liegenden Datenquelle um ein ` QIODevice` handelt, wird die aktuelle Position im Gerät nicht automatisch auf den Anfang der Eingabe gesetzt. Rufen Sie dazu ` QIODevice::seek(0)` auf dem Gerät auf.

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 diese Daten zunächst.

Siehe auch data().

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

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

Dies ist eine überladene Funktion.

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