如何使用xml数据填充flex组合框

时间:2012-04-03 15:46:59

标签: flex

这是xml数据:

<root>
    <recommendedMaterials>
        <value label="Aluminium" data="0" /> 
        <value label="Iron" data="0" /> 
    </recommendedMaterials>

</root

我的代码:          

<mx:Script>
        <![CDATA[
public function populateRecommendedMaterials(xml_val:XML)           
            {
                 materials_Cmb.dataProvider=(xml_val.recommendedMaterials); 
            }

    ]]>

</mx:Script>        

    <mx:ComboBox x="212" y="164" id="materials_Cmb" dataProvider="materialsCmb_Dp"></mx:ComboBox>

</mx:Canvas>

问题是整个xml被填充。我只想要标签。 :(

1 个答案:

答案 0 :(得分:4)

这里有两种方法,具体取决于您的需求。在任何一种情况下,您想要的数据都是recommendedMaterials节点的 children ,而不是节点本身(这就是您所做的)。

materials_Cmb.dataProvider = 
    new XMLListCollection(xml_val.recommendedMaterials.children());

这应该已经成功了。请注意,我将XMLList包装在XMLListCollection中:对于mx:ComboBox,这不是必需的,因为它在内部也会这样做,但对于Spark组件,它是强制性的。

另一个更简洁的解决方案是找到所有“价值”节点,但我不知道这种方法是否适合您的账单。

materials_Cmb.dataProvider = 
    new XMLListCollection(xml_val..value);

另外,不要忘记在ComboBox中指定正确的'labelField':

<s:ComboBox labelField="@label" />

@符号表示XML属性。