Wie kann ich ausführen von XPath-Abfragen in QT?
Wie führe ich eine XPath-Abfrage in QT?
Ich brauche zu Sortieren, bestimmte tags mit bestimmter Werte in einem bestimmten Attribut. Die QXmlQuery Dokumentation ist alles andere als lesbar.
Dem schema bin ich der Analyse der Rhythmbox DB-format:
<rhythmdb version="1.6">
<entry type="ignore">
<title></title>
<genre></genre>
<artist></artist>
<album></album>
<location>file:///mnt/disk/music/Cover.jpg</location>
<mountpoint>file:///mnt/disk</mountpoint>
<mtime>1222396828</mtime>
<date>0</date>
<mimetype>application/octet-stream</mimetype>
<mb-trackid></mb-trackid>
<mb-artistid></mb-artistid>
<mb-albumid></mb-albumid>
<mb-albumartistid></mb-albumartistid>
<mb-artistsortname></mb-artistsortname>
</entry>
<entry type="song">
<title>Bar</title>
<genre>Foobared Music</genre>
<artist>Foo</artist>
<album>The Great big Bar</album>
<track-number>1</track-number>
<disc-number>1</disc-number>
<duration>208</duration>
<file-size>8694159</file-size>
<location>file:///media/disk/music/01-Foo_-_Bar.ogg
<mountpoint>file:///media/disk
<mtime>1216995840</mtime>
<first-seen>1250478814</first-seen>
<last-seen>1250478814</last-seen>
<bitrate>301</bitrate>
<date>732677</date>
<mimetype>application/x-id3</mimetype>
<mb-trackid></mb-trackid>
<mb-artistid></mb-artistid>
<mb-albumid></mb-albumid>
<mb-albumartistid></mb-albumartistid>
<mb-artistsortname></mb-artistsortname>
</entry>
</rhythmdb>
Dies ist Ihre grundlegende XML-Schema ist eine Sammlung von strukturierten Einträgen. Meine Absicht war es, heraus zu filtern und die Einträge mit dem Typ 'ignorieren'.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die entsprechende Dokumentation ist unter: http://qt-project.org/doc/qt-4.8/qxmlquery.html#running-xpath-expressions.
Die Lösung, die ich kam, war der Einsatz von QXmlQuery zum generieren einer XML-Datei dann analysieren und es wieder mit QDomDocument.
Falls sich jemand wundert, das ist mein code aus einer jüngsten Zweig der Mixxx Projekt, insbesondere die features_looping Zweig.
Die Dinge, die ich mag über diese Lösung sind:
Wenn es passt Ihre Analyse-Anforderungen, können Sie mit der SAX-basierte reader statt einer DOM-basierten. Mit QXmlSimpleReader mit ein untergeordnetes QXmlDefaultHandler, können Sie den Zugriff auf jedes element Ihres XPath-Abfrage als auch Ihre Attribute, wie das Dokument gescannt wird. Ich denke, dieser Ansatz wäre schneller als eine DOM-basierte, die Sie nicht haben, um etwas zu Lesen, zweimal, und es ist bereits in Qt. Es ist hier ein Beispiel: http://www.digitalfanatics.org/projects/qt_tutorial/chapter09.html unter "Lesen Mit SAX."