Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 如何用xml数据填充flex组合框_Apache Flex - Fatal编程技术网

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

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

以下是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都被填充了。我只想要标签(

根据您的需要,这里有两种方法。在任何一种情况下,您需要的数据都是
推荐材质
节点的子节点,而不是节点本身(这就是您所做的)

<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>