Come si esegue una query XPath in QT?Come posso eseguire query XPath in QT?
Ho bisogno di ordinare determinati tag con valori specifici in un determinato attributo. La documentazione di QXmlQuery è tutt'altro che leggibile.
Lo schema che sto analisi è il formato Rhythmbox DB:
<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>
Questo è il vostro XML Schema di base che ha una collezione di voci strutturati. La mia intenzione era di filtrare le voci con il tipo "ignora".
Non è necessario analizzare l'XML due volte; utilizzare semplicemente un diverso overload QXmlQuery :: evaluateTo(). Basta usare il risultato 'QXmlResultItems; query.evaluateTo (& result); ' e quindi scorrere su 'risultato' per ottenere tutti i nodi corrispondenti. Vedere http://doc.trolltech.com/main-snapshot/qxmlresultitems.html –
XMLResultItems, XMLItems o XMLNodeItems non sono adeguati per quanto ho potuto vedere dalla documentazione. Come dice la documentazione: "Poiché QXmlNodeModelIndex è intenzionalmente una classe semplice, non ha funzioni membro per accedere alle proprietà dei nodi." –
Come dice la documentazione: "Poiché QXmlNodeModelIndex è intenzionalmente una classe semplice, non ha funzioni membro per accedere alle proprietà dei nodi." Completamente d'accordo. C'è un modo SEMPLICE per eseguire una richiesta XPath e navigare facilmente attraverso il risultato? Sto iniziando a pensare che la risposta è no! Sto cercando sul web da 2 giorni e non trovo nulla. Penso che userò la Gnome libxml invece di QtXml, ma fa schifo usando g –