1

我正在尝试解析 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 创建者说:“无法将 [未定义] 分配给 QString”。我做错了什么?我正在为 Sailfish 制作应用程序,这个silicalistview 与 qt 中的 listview 相同。我的目标是像这样查看它们:

This I want
This I want 2

等等。

感谢您的时间!

4

1 回答 1

2

我认为的问题是你只有一个<list>元素,然后你的所有元素<item>都在同一个父元素中。因此,您的查询<list>在您的 XML 中查找每一个(只有一个),然后它只打印第一个<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
     }
   }
 }
于 2014-02-14T17:16:34.943 回答