2011-09-13 7 views
2

私はRSSフィードをQMLで解析したいと考えています。コンテンツタグは、私は文字列にQMLとURLを解析する方法:RSS QMLで解析する

フィード構造は、メディアである

<channel> 
<item> 
<title> 
</title> 
<description> 
</description> 
<media:content url="http://someURLHere.com/avatar/somethingHere?s=96&#38;d=identicon&#38;r=G" medium="image"> 
</media:content> 
</item> 

私の問題のように見えますか?

答えて

2

coyotte508の答えにコメントを追加できないので、代わりに、XmlListModelのnamespaceDeclarationsプロパティを使用して 'media'の名前空間を追加する必要があります。例:

XmlListModel { 
    ... 
    namespaceDeclarations: "declare namespace media = 'http://put/the/path/here';" 
    XmlRole { name: "url"; query: "media:content/@url/string()" } 
} 
+0

ありがとうharriha、これは問題を解決しました – belhawary

0

基本的にhttp://doc.qt.nokia.com/4.7-snapshot/qml-xmllistmodel.htmlhttp://doc.qt.nokia.com/4.7-snapshot/qml-xmlrole.html

を参照してください:

XmlModel { 
    id: mymodel 
    xml: "blabblabla" /* you can also use source: to read directly from the web */ 
    query: "/rss/channel/item/" 

    XmlRole { 
    name: "url" 
    query: "media:content/@url/string()" 
    } 
} 

そして、それを取得する:

mymodel.get(0).url 

あなたは、いくつかのチャンネルを持っており、それぞれのURLを取得したい場合は、することができますmymodel.countでチャンネル数を取得し、それぞれにmymodel.get(i)でアクセスします。

+0

私は何を得ること QML XmlRoleです:無効なクエリ: "メディア:コンテンツ/ @のURL /文字列()" – belhawary

+0

は次に(メディア/ @ URL /文字列を試してみてください)、メディア/ URL /文字列@ ()、@ media:content/url/string()、XmlModel.queryを "/ rss/channel/item/media:content"に、XmlRole.queryを "@ url/string()"に変更し、 ":コンテンツ"。それらの仕事の1つがあるかどうかを見てください。 – coyotte508

関連する問題