【发布时间】:2015-03-21 23:30:25
【问题描述】:
给定以下具有 2 个嵌套级别的 XML 源:
<papers>
<paper id="1">
<authors>
<author name="John Doe" />
<author name="Jane Doe" />
</authors>
</paper>
<paper id="2">
<authors>
<author name="John Appleseed" />
</authors>
</paper>
</papers>
当我在 XmlListModel 中定义 XmlRole 时:
XmlListModel {
id: myPapers
source: "http://example.com/papers.xml"
query: "/papers/paper"
XmlRole { name: "author"; query: "authors/author/@name/string()" }
}
它将包含所有 3 位作者,而不仅仅是第一篇论文中的 2 位“Doe”作者。我可以在角色中添加索引 (authors/author[1]),但我现在不知道会有多少论文和作者。定义 author1, author2, ..., author99 感觉不是正确的方法。
我如何告诉XmlListModel 我只希望ListView 中的一篇论文的作者?
ListView {
model: myPapers
delegate: Text { text: author }
}
现在显示:
John Doe
Jane Doe
John Appleseed <-- don't want this one
谢谢!
UPDATE 1源文件是一个 URL,我更喜欢 not 多次获取同一个文件以获取数据(它用于移动应用程序)。 p>
UPDATE 2 #qt-quick 上的优势告诉我最好使用ListView 而不是Repeater。还不明白为什么。相应地修改了问题。
【问题讨论】:
-
从未尝试过,但如果您在查询中添加索引,也许它会起作用?与此处所做的类似:stackoverflow.com/questions/1209382/…
-
谢谢@danielfranca,请看下面我更长的回复,它有效......但是......