Wie führe ich XPath-Abfragen in QT aus?

8

Wie führe ich eine XPath-Abfrage in QT?

Ich muss bestimmte Tags mit bestimmten Werten in einem bestimmten Attribut aussortieren. Die QXmlQuery-Dokumentation ist alles andere als lesbar.

Das Schema, das ich analysiere, ist das Rhythmbox-DB-Format:

%Vor%

Dies ist Ihr grundlegendes XML-Schema, das eine Sammlung strukturierter Einträge enthält. Meine Absicht war, die Einträge mit dem Typ 'ignorieren' zu filtern.

    
Phillip Whelan 17.08.2009, 08:49
quelle

2 Antworten

11

Die relevante Dokumentation befindet sich unter: Ссылка .

>

Die Lösung, zu der ich kam, war, QXmlQuery zu verwenden, um eine XML-Datei zu generieren, und sie dann mit QDomDocument erneut zu analysieren.

%Vor%

Falls jemand sich fragt, ist dies mein Code, der aus einem letzten Zweig des Mixxx-Projekts übernommen wurde, insbesondere aus dem Zweig "features_looping".

Die Dinge, die ich an dieser Lösung nicht mag, sind:

  • XML zweimal analysieren
  • Verkettung des Ergebnisses mit einem Start- und Endtag.
Phillip Whelan 17.08.2009, 09:11
quelle
-2

Wenn es zu Ihren Analyseanforderungen passt, können Sie den SAX-basierten Reader anstelle eines DOM-basierten Readers verwenden. Wenn Sie QXmlSimpleReader mit einem untergeordneten QXmlDefaultHandler verwenden, können Sie beim Scannen des Dokuments auf jedes Element Ihrer XPath-Abfrage sowie auf ihre Attribute zugreifen. Ich denke, dieser Ansatz wäre schneller als ein DOM-basierter Ansatz. Sie müssen nichts zweimal lesen und es ist bereits in Qt eingebaut. Es gibt ein Beispiel hier: Ссылка unter "Lesen mit SAX".

    
bparker 08.04.2011 18:27
quelle

Tags und Links