依然是QML中xmllistmodel问题 (Qt qml xmllistmodel)
[
- XML code
<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"> <channel> <title>火影忍者</title> <item> <title>第一集</title> </item> <item> <title>第二集</title> </item> </channel></rss>
- JScript code
XmlListModel{ id:channels source: "xx.xml" query: "/rss/channel/item" XmlRole{name:"tvname"; query:"title/string()" }//能通过代理(delegate)的Text能显示每个item下title,(如果有多个title则不能,需要加下标,很麻烦) }这种情况下如何显示上级标签的火影忍者呢?listview中delegate:item{ Text{ text:tvname } }
- JScript code
XmlListModel{ id:channels source: "xx.xml" query: "/rss/channel" XmlRole{name:"tvname"; query:"title/string()"} //能访问到火影忍者 }如果要访问第一集第二集则需要 XmlRole{name:"name1"; query:"item[1]/title/string()"} 需要加下标才能访问第一集
XmlRole{name:"name2"; query:"item[2]/title/string()"} 需要改变name里面的别名和查询里面的下标才能访问第二集。
为了让每级标签的title都能显示,这个方法显然很繁琐。但第一个方法我想不到该如何查询“火影忍者”
方法2中的代理:
listview中delegate:item{ Text{ text:tvname }; Text{ text:name1 }; Text{ text:name2 }; } 注:这里只是简单写了一下代理,总之引用xmlrole方法是这样,繁琐得很。假如同级标签里有很多title,那不是还得逐一逐一的xmlrole,逐一逐一的Text??
思来想去,尝试了些方法都不行。所以又来向各路大哥来讨教一下了,谢谢了。在xmllistmodel中query设置好了查询路径之后,qml中有什么简单一点的方法能实现xml上下级标签多个字符串同时显示呢?
[解决办法]
- JScript code
query: "//title"XmlRole {name: "tvname"; query: "./string()"}