Seite 1 von 1

[Gelöst]Fortschritt beim Parsen mit QXmlStreamReader

Verfasst: 12. Januar 2016 23:27
von MichaelS
Hallo,

ich parse XML-Dateien mit Hilfe von QXmlStreamReader. Das funktioniert soweit gut, ich würde dem Benutzer aber gerne den Fortschritt der Verarbeitung anzeigen. Allerdings fehlt mir da die zündende Idee, wie ich QXmlStreamReader die Informationen entlocken kann, wieviel Bytes der Datei schon verarbeitet wurden. Für Denkanstöße wäre ich dankbar.

Gruß Michael

Re: Fortschritt beim Parsen mit QXmlStreamReader

Verfasst: 13. Januar 2016 06:26
von Christian81
Füttere den StreamReader doch häppchenweise.

Re: Fortschritt beim Parsen mit QXmlStreamReader

Verfasst: 13. Januar 2016 09:08
von RHBaum
der XML reader verlangt nach QXmlInputSource als Dataenquelle ....
QXmlInputSource wiederum will nen QIODevice, um den es sich als Wrapper legt.
QIODevice ist eigentlich die Qt version eines rohen streames ... vergelichbar mit den Streambuffer klassen in der STL.

QIODevice ist der Dreh und Angelpunkt da ... Das nen generisches Interface für binäre Lese und schreibevorgänge mit ner rudimentären Feature Schnittstelle.

Die Inputsource wird die Daten immer nur blockweise nacheinander (sequentiell) vom QIODevice abrufen .... Du brauchst also in diese richtung nur nen read und nen End setzen

QFile als QIODevice hingegen bietet dir ne ganze menge mehr (Random Access) .... unter anderem die infos die zur berechnung des Fortschritts brauchst ... aslo die anzahl der gesammten bytes ....

Wenn du nun ne Klasse implementierst, die eine QIODevice Schnittstelle anbietet, nur im sequentiellen Modus, und sich Ihre daten aus nem QFile holt (Random Access) udn die nur durchreicht ... hasst du alle infos, und auch den einsprungspunkt (die read funktion) die du brauchst um nen Fortschritt an deine App zu emitten ...

Übrigens macht man das bei allen parsern auf ähnliche Weise ...
Also beim Xerces und bei tinyXML etc ... Die Klassen heissen nur immer anders ^^ manchmal sinds direkt stl klassen (i/o/streams) manchmal auch klassen direkt aus der Parser lib ...

Ciao ....

Re: Fortschritt beim Parsen mit QXmlStreamReader

Verfasst: 13. Januar 2016 14:40
von MichaelS
Vielen Dank für die Tipps. Erste 'Schnelltests' mit einem QIODevice sehen ganz gut aus. Ich denke, damit komme ich zum Ziel.

Gruß Michael