如何使用XML数据初始化flex List

时间:2012-11-17 07:03:12

标签: xml actionscript-3 flex web-applications

我的应用程序是基于Adobe Flex 4的

我有一个XML如下:

<data>
   <GENERAL _index="0" DESCRIPTION="DEAD TIME" CODE="D" _count="1"/>
   <REQUEST>
      <PARAMETERS>
         <page>db/ocr_valid_opr_category.xsl,db/sql.xsl</page>
         <maj_cd>COC</maj_cd>
      </PARAMETERS>
   </REQUEST>
</data>

我想用GENERAL选项卡中的数据初始化我的列表(Adobe Flex 4),您看到的是“描述”和“代码”值,这是动态XML并且不断变化,如何将GENERAL选项卡中的数据设置为我在Flex 4中的List数据提供程序。我希望描述为LabelFeild的列表和codeCode作为列表的后端值,希望你理解???

2 个答案:

答案 0 :(得分:0)

你可以试试这个,

我们需要更改List dataProvider的XML结构应该是XMLList,这样我们才能显示项目列表,所以我们需要在它们之间添加XML元素。

您可以访问list.selectedItem.@CODE.toString()

等CODE属性
<?xml version="1.0" encoding="utf-8"?><s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx">   `<fx:Script>
    <![CDATA[
        import mx.collections.XMLListCollection;
        import mx.controls.Alert;

        import spark.events.IndexChangeEvent;

        [Bindable]
        private var xml:XML = <data>
                                <list>
                                   <GENERAL _index="0" DESCRIPTION="DEAD TIME" CODE="D" _count="1"/>
                                   <REQUEST>
                                      <PARAMETERS>
                                         <page>db/ocr_valid_opr_category.xsl,db/sql.xsl</page>
                                         <maj_cd>COC</maj_cd>
                                      </PARAMETERS>
                                   </REQUEST>
                                </list>
                                <list>
                                   <GENERAL _index="1" DESCRIPTION="ENOUGH TIME" CODE="E" _count="2"/>
                                   <REQUEST>
                                      <PARAMETERS>
                                         <page>db/ocr_valid_opr_category.xsl,db/sql.xsl</page>
                                         <maj_cd>COC</maj_cd>
                                      </PARAMETERS>
                                   </REQUEST>
                                </list>
                              </data>;  

        protected function list_changeHandler(event:IndexChangeEvent):void
        {
            Alert.show(list.selectedItem.@CODE.toString());
        }

    ]]>
</fx:Script>

<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<s:layout>
    <s:VerticalLayout/>
</s:layout>

<s:List id="list" labelField="@DESCRIPTION" dataProvider="{new XMLListCollection(XMLList(xml.list.GENERAL))}"
        change="list_changeHandler(event)"/>
</s:WindowedApplication>

答案 1 :(得分:0)

首先,您应该使用顶级xml节点来包含您的xml数据:

    private var xml:XML =
            <xml>
            <data>
              <GENERAL _index="0" DESCRIPTION="DEAD TIME" CODE="D" _count="1"/>
              <REQUEST>
                <PARAMETERS>
                <page>db/ocr_valid_opr_category.xsl,db/sql.xsl</page>
                <maj_cd>COC</maj_cd>
              </PARAMETERS>
             </REQUEST>
           </data>
           </xml>;

      [Bindable]
      private var dataList:XMLListCollection = new XMLListCollection(xmlOne.data);
      ...
      private function labelFunc(item:Object):String {
        return item.GENERAL.@DESCRIPTION;
      }
    ]]>
  </fx:Script>

  <s:VGroup>
    <s:List dataProvider="{dataList}" labelFunction="labelFunc"/>
  </s:VGroup>

引用“CODE”就像“DESCRIPTION”:item.GENERAL。@ CODE。