QXmlStreamEntityResolver Class
Die Klasse „QXmlStreamEntityResolver“ stellt einen Entity-Resolver für eine „ QXmlStreamReader “ bereit. Mehr...
| Kopfzeile: | #include <QXmlStreamEntityResolver> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QXmlStreamEntityResolver ist Teil der XML-Klassen.
Hinweis: Alle Funktionen dieser Klasse sind reentrant.
Öffentliche Funktionen
| QXmlStreamEntityResolver() | |
| virtual | ~QXmlStreamEntityResolver() |
| virtual QString | resolveUndeclaredEntity(const QString &name) |
Ausführliche Beschreibung
Wird verwendet, um „ QXmlStreamReader “ mitzuteilen, wie Entitäten, die nicht unter declared in the internal-set of the DTD aufgeführt sind, erweitert werden sollen.
Sicherheitshinweise
Entitätszyklen
Sie müssen darauf achten, dass Entitäten nicht in Zyklen aufgelöst werden, da „ QXmlStreamReader “ Zyklen nur in „ entities defined in the DTD “ erkennt und zurückweist, nicht jedoch in Entitäten, die aus einer Implementierung der Schnittstelle „QXmlStreamEntityResolver“ abgeleitet sind.
Dies ist beabsichtigt: „ QXmlStreamReader “ überträgt die Arbeit an die Implementierung eines konkreten `QXmlStreamEntityResolver`. Bei statischen Zuordnungen, wie beispielsweise XML-Entitätsdefinitionen für Zeichen, ist dies trivialerweise gewährleistet, sodass eine Nachverfolgung im Hintergrund den Prozess für alle Beteiligten nur verlangsamen würde.
Interessant wird es, wenn Entitätsdefinitionen aus externen Eingaben gelesen werden, einschließlich nicht vertrauenswürdiger Quellen. In diesem Fall muss Ihre Implementierung sicherstellen, dass die als Eingabe verwendeten Erweiterungen zyklusfrei sind. Dies ist eine einfache Graphoperation, die in linearer Zeit und mit linearem Speicherplatzbedarf implementiert und im Voraus beim Laden durchgeführt werden kann, sodass sie die Leistung von ` resolveUndeclaredEntity()` nicht beeinträchtigt.
Begrenzung der Entitätserweiterung
Derzeit werden von dieser Klasse aufgelöste Entitäten nicht auf die Anzahl der Aufrufe von ` QXmlStreamReader::entityExpansionLimit()` angerechnet. Dies kann sich in zukünftigen Versionen von Qt ändern.
Vorerst müssen Sie selbst eine Obergrenze für die Erweiterung festlegen, wenn Sie Entitätsdefinitionen aus externen Eingaben lesen. Nach der Zykluserkennung ist die Berechnung des längsten Pfades eine einfache Graphoperation, die in linearer Zeit und linearem Speicherplatz implementiert und im Voraus beim Laden durchgeführt werden kann, sodass auch sie die Leistung von ` resolveUndeclaredEntity()` nicht beeinträchtigt.
Siehe auch ` QXmlStreamReader::setEntityResolver()`.
Dokumentation der Member-Funktionen
[constexpr noexcept default] QXmlStreamEntityResolver::QXmlStreamEntityResolver()
Erstellt standardmäßig eine Instanz von ` QXmlStreamEntityResolver`.
[virtual noexcept] QXmlStreamEntityResolver::~QXmlStreamEntityResolver()
Löscht den Entity-Resolver.
[virtual] QString QXmlStreamEntityResolver::resolveUndeclaredEntity(const QString &name)
Implementieren Sie diese Funktion neu, um die nicht deklarierte Entität „ name “ aufzulösen und deren Ersatztext zurückzugeben. Wenn die Entität dem Entitätsauflöser unbekannt ist, geben Sie „ null string: QString() “ zurück. Dies löst in QXmlStreamreader einen Fehler aus. Eine leere, aber nicht null-werte Zeichenkette gilt als gültige Erweiterung der Entität und verursacht keinen Fehler.
Die Standardimplementierung gibt immer „ QString() “ zurück.
© 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.