我正在尝试解析xml并在程序中查看它:
<list>
<item>
This i want
</item>
<item>
This i want 2 </item>
<item>This i want</item>
<item>This i want</item>
<item>This i want</item>
<item>This i want</item>
<item/>
<item/>
<item/>
</list>
使用像这样的XmlListModel和使用ListModel的视图:
XmlListModel {
id: itemmodel
source: page.dataURL
query: "/list"
XmlRole {
name: "item"
query: "item/string()"
}
}
SilicaListView {
width: 180; height: 300
model: itemmodel
delegate: Text { text: item }
}
当我运行它时,Qt创建者说:“无法将[undefined]分配给QString”。 我做错了什么? 我正在向Sailfish制作应用程序,这个silicalistview与qt中的listview相同。 我的目标是像这样查看它们:
This I want
This I want 2
等等。
感谢您的时间!
答案 0 :(得分:2)
我认为问题是您只有一个<list>
元素,然后您的所有<item>
都在同一个父级中。因此,您的查询正在查找XML中的每个<list>
(仅一个),然后它只打印第一个<item>
元素。
以下是一些代码更改应该有效的XmlRole
和query
。我将XML直接放入xml
属性中以简化:
XmlListModel {
id: itemmodel
xml: "<list><item>This i want</item><item>This i want2</item></list>"
query: "/list/item"
XmlRole {
name: "item"
query: "string()"
}
}
ListView {
width: 180; height: 300
model: itemmodel
delegate: Rectangle {
height: 40
width: 100
color:"red"
Text {
text: item
}
}
}