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.
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:
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".