Apache flex 如何用xml数据填充flex组合框
以下是xml数据:Apache flex 如何用xml数据填充flex组合框,apache-flex,Apache Flex,以下是xml数据: <root> <recommendedMaterials> <value label="Aluminium" data="0" /> <value label="Iron" data="0" /> </recommendedMaterials> </root <mx:Script> <![CDATA[ public fun
<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都被填充了。我只想要标签(根据您的需要,这里有两种方法。在任何一种情况下,您需要的数据都是
推荐材质
节点的子节点,而不是节点本身(这就是您所做的)
<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>
注意,我将XMLList包装在一个XMLListCollection中:对于mx:ComboBox来说,这并不是绝对必要的,因为它在内部也会这样做,但是对于Spark组件,这是必须的
<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>
另一个更简洁的解决方案是找到所有的“值”节点,但我不知道这种方法是否符合您的要求
<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>
materials_Cmb.dataProvider =
new XMLListCollection(xml_val..value);
另外,不要忘记在组合框中指定正确的“labelField”:
<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>
<s:ComboBox labelField="@label" />
@sign表示一个XML属性。根据您的需要,这里有两种方法。在这两种情况下,您需要的数据都是
推荐材质
节点的子节点,而不是节点本身(这就是您所做的)
<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>
注意,我将XMLList包装在一个XMLListCollection中:对于mx:ComboBox来说,这并不是绝对必要的,因为它在内部也会这样做,但是对于Spark组件,这是必须的
<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>
另一个更简洁的解决方案是找到所有的“值”节点,但我不知道这种方法是否符合您的要求
<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>
materials_Cmb.dataProvider =
new XMLListCollection(xml_val..value);
另外,不要忘记在组合框中指定正确的“labelField”:
<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>
<s:ComboBox labelField="@label" />
@sign表示一个XML属性。ok..thnx很多!但是我已经混淆了XML和XMLList,您添加了一个新的XMLListCollection.:(.在我的研究中添加了这个术语:)@VishwasGagrani只是为了让您开始:XML和XMLList是低级ActionScript/E4X类(E4X是XML解析习惯用法),而XMLListCollection是Flex框架中的一个类。基本上XMLListCollection是XMLList,ArrayCollection是Array。好吧。有很多!但是我已经混淆了XML和XMLList,你添加了一个新的XMLListCollection.:(.在我的研究中添加了这个术语:)@VishwasGagrani只是让您开始:XML和XMLList是低级ActionScript/E4X类(E4X是XML解析习惯用法),而XMLListCollection是Flex框架中的一个类。基本上XMLListCollection对于XMLList就像ArrayCollection对于数组一样。
<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>