QML XmlListModel more than one element
-
Helo :)
I am trying to get xml data into a QML XmlListModel, I've gotten most of it working now but bit lost with the last part to get multiple category streams.
The xml itself looks like this:
@<root>
<fullscreen>false</fullscreen>
<aspectratio>default</aspectratio>
<audiodelay>0</audiodelay>
<apiversion>3</apiversion>
<currentplid>4</currentplid>
<time>1</time>
<volume>0</volume>
<length>9907</length>
<random>false</random>
<rate>1</rate>
<state>paused</state>
<loop>false</loop>
<version>2.1.5 Rincewind</version>
<position>0.00018763827392831</position>
<repeat>false</repeat>
<subtitledelay>0</subtitledelay>
<category name="meta">
<info name="title">
The Movie
</info>
<info name="filename">
The Movie
</info>
</category>
<category name="Stream 0">
<info name="Type">Video</info>
<info name="Frame rate">23.976215</info>
<info name="Decoded format">Planar 4:2:0 YUV</info>
<info name="Codec">H264 - MPEG-4 AVC (part 10) (avc1)</info>
<info name="Language">English</info>
<info name="Resolution">1024x542</info>
</category>
<category name="Stream 1">
<info name="Bitrate">384 kb/s</info>
<info name="Type">Audio</info>
<info name="Channels">3F2R/LFE</info>
<info name="Sample rate">48000 Hz</info>
<info name="Language">Russian</info>
<info name="Codec">A52 Audio (aka AC3) (a52 )</info>
</category><category name="Stream 6"><info name="Description">Full</info>
<info name="Type">Subtitle</info>
<info name="Language">English</info>
<info name="Codec">Text subtitles with various tags (subt)</info>
</category><category name="Stream 3"><info name="Description">Forced</info>
<info name="Type">Subtitle</info>
<info name="Language">Russian</info>
<info name="Codec">Text subtitles with various tags (subt)</info>
</category>
<category name="Stream 7">
<info name="Description">SDH</info>
<info name="Type">Subtitle</info>
<info name="Language">English</info>
<info name="Codec">Text subtitles with various tags (subt)</info>
</category><category name="Stream 5"><info name="Description">Forced</info>
<info name="Type">Subtitle</info>
<info name="Language">English</info>
<info name="Codec">Text subtitles with various tags (subt)</info>
</category>
<category name="Stream 4">
<info name="Description">Full</info>
<info name="Type">Subtitle</info>
<info name="Language">Russian</info>
<info name="Codec">Text subtitles with various tags (subt)</info>
</category>
<category name="Stream 2">
<info name="Codec">A52 Audio (aka AC3) (a52 )</info>
<info name="Type">Audio</info>
<info name="Language">English</info>
<info name="Sample rate">48000 Hz</info>
</category>
</information>
</root>
@And for it I got this xmllistmodel working to get the data out:
@ XmlListModel{ id: xmlModel query: "/root" XmlRole{ name: "fullscreen"; query: "fullscreen/string()"} XmlRole{ name: "aspectratio"; query: "aspectratio/string()"} XmlRole{ name: "audiodelay"; query: "audiodelay/string()"} XmlRole{ name: "currentplid"; query: "currentplid/string()"} XmlRole{ name: "time"; query: "time/string()"} XmlRole{ name: "volume"; query: "volume/string()"} XmlRole{ name: "length"; query: "length/string()"} XmlRole{ name: "random"; query: "random/string()"} XmlRole{ name: "rate"; query: "rate/string()"} XmlRole{ name: "state"; query: "state/string()"} XmlRole{ name: "loop"; query: "loop/string()"} XmlRole{ name: "repeat"; query: "repeat/string()"} XmlRole{ name: "subtitledelay"; query: "subtitledelay/string()"} XmlRole{ name: "artist"; query: "information/category/info[@name='artist']/string()"} XmlRole{ name: "album"; query: "information/category/info[@name='album']/string()"} XmlRole{ name: "filename"; query: "information/category/info[@name='filename']/string()"} //Stream 0 is hard-coded :( XmlRole{ name: "type"; query: "information/category[@name='Stream 0']/info[@name='Type']/string()"} }
@
All above information is fine but what I can't seem to get properly is the multiple stream information. As depending on the file there could only be 2 streams or even 10 if user has more audio tracks or subtitles.
The last line in the xmllistmodel I can lookup the type of the stream 0 but then it needs to be hard-coded.
What I am trying to find is the stream number what type it is.Is there any way to get this information from xml using qml for all of the streams?
Thanks :)