2011-09-13 126 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