Qml 可从非子节点获取数据的XmlListModel查询
在下面的XML文件中有Qml 可从非子节点获取数据的XmlListModel查询,qml,qt5,qtquick2,Qml,Qt5,Qtquick2,在下面的XML文件中有项和项类型。 ITEMTYPES描述给定类型的项,items是这些类型的实例。ITEM与ITEMTYPE的关系是n:1 ITEM通过属性type引用ITEMTYPE: <ROOT> <ITEMS> <ITEM type="Z"/> <ITEM type="X"/> <ITEM type="Y"/> <ITEM type="X"/> <ITEM type=
项
和项类型
。
ITEMTYPES
描述给定类型的项,items
是这些类型的实例。ITEM
与ITEMTYPE
的关系是n:1
ITEM
通过属性type
引用ITEMTYPE
:
<ROOT>
<ITEMS>
<ITEM type="Z"/>
<ITEM type="X"/>
<ITEM type="Y"/>
<ITEM type="X"/>
<ITEM type="Y"/>
<ITEM type="Z"/>
</ITEMS>
<ITEMTYPES>
<ITEMTYPE type="X">
<Color>Red</Color>
<Size>100</Size>
</ITEMTYPE>
<ITEMTYPE type="Y">
<Color>Green</Color>
<Size>200</Size>
</ITEMTYPE>
<ITEMTYPE type="Z">
<Color>Yellow</Color>
<Size>150</Size>
</ITEMTYPE>
</ITEMTYPES>
</ROOT>
这当然行不通。我既不知道如何引用同级,也不知道如何引用相应的节点,其中
ITEM
和ITEMTYPE
具有相同的属性类型 您可以使用条件,即加入节点
试试看:
XmlListModel {
source: "..."
query: "//ITEMTYPES/ITEMTYPE[@type =//ITEMS/ITEM/@type]"
XmlRole { name: "col"; query: "Color/string()" }
XmlRole { name: "size"; query: "Size/string()" }
}
XmlListModel {
source: "..."
query: "//ITEMTYPES/ITEMTYPE[@type =//ITEMS/ITEM/@type]"
XmlRole { name: "col"; query: "Color/string()" }
XmlRole { name: "size"; query: "Size/string()" }
}