QXmlDefaultHandler auslesen zwischen den Tags

Verschiedenes zu Qt
Antworten
huckleberry
Beiträge: 115
Registriert: 2. Oktober 2010 17:07

QXmlDefaultHandler auslesen zwischen den Tags

Beitrag von huckleberry »

Hallo,

ich habe aktuell eine XMl welche ich auslese und mittels QXmldefaultHandler parse. Das klappt soweit wunderbar bei den Attributen.
Nur ich weiß nicht wie ich den Inhalt zwischen zwei Tags auslese:
<tag1>Text</tag1>
?
attributes.values("version") gibt mir ja sowas zurück
<tag2 version="1.0">
, in diesem Falle "1.0". Aber wie lese ich das "Text" im vorherigen beipsiel aus?

Thnx und VG

Huck
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QXmlDefaultHandler auslesen zwischen den Tags

Beitrag von Christian81 »

Wo gibt es bei QXmlDefaultHandler die Funktion attributes()? Wohl eher QXmlStreamReader, oder?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
huckleberry
Beiträge: 115
Registriert: 2. Oktober 2010 17:07

Re: QXmlDefaultHandler auslesen zwischen den Tags

Beitrag von huckleberry »

Christian81 hat geschrieben:Wo gibt es bei QXmlDefaultHandler die Funktion attributes()? Wohl eher QXmlStreamReader, oder?
Nein, eigentlich nicht: Im QXmlDefaultHandler wird die Methode

Code: Alles auswählen

    bool startElement(const QString &namespaceURI, const QString &localName,
                      const QString &qName, const QXmlAttributes &attributes) Q_DECL_OVERRIDE;
überschrieben und der 4. Parameter vom Typ QXmlAttributes hat die Information.

Code: Alles auswählen

bool MeinXMLHandler::startElement( const QString &/*namespaceURI*/ ,
                                    const QString &/*localName*/ ,
                                    const QString &qName,
                                    const QXmlAttributes &attributes)
{
    // === 1. level 
    QString vers;
    if (qName == "tag2") vers = attributes.values("version")
//..
}
würde mir in vers "1.0" liefern
huckleberry
Beiträge: 115
Registriert: 2. Oktober 2010 17:07

Re: QXmlDefaultHandler auslesen zwischen den Tags

Beitrag von huckleberry »

Achja, ist übrigens gelöst. Hab herausgefunden, dass man die Methode characters() überschreiben muss:

Code: Alles auswählen

bool MeinXMLHandler::characters(const QString &str)
{
    currentText += str;
    return true;
}
currentText hätte dann immer nach dem entsprechenden endElement() den Value zwischen den Tag inne..
Antworten