2011-09-13 154 views
2

我想用QML解析RSS提要。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> 

我的問題是與媒體:內容標籤,如何可以解析與QML的網址轉換成字符串?

回答

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 

如果您有多個頻道,並想檢索每個網址,你可以使用mymodel.count獲取通道數量,並使用mymodel.get(i)訪問每個通道。

+0

我所得到的是 QML XmlRole:無效的查詢: 「媒體:內容/ @網址/串()」 – belhawary

+0

然後嘗試媒體/ @網址/串(),@媒體/ URL /串(),@media:content/url/string(),或者將XmlModel.query更改爲「/ rss/channel/item/media:content」,將XmlRole.query更改爲「@ url/string()」, 「:內容」。看看是否有其中一項工作。 – coyotte508