使用xml文件填充树

时间:2013-07-28 00:59:50

标签: xml flex tree adobe mxml

帮助,

在mxml中,我可以使用httpservice在运行时将xmlfile加载到xmllistcollection中,然后将其分配给列表对象。

我还可以在代码中定义xml对象菜单树结构并将其分配给树。

我不能做的是在运行时加载xml文件并将其分配给树。

所以我正在尝试加载文件:

<root>
 <menuitem name="First Main Item">
   <menuitem name = "sub item 1"/>
   <menuitem name = "sub item 2"/>
 </menuitem>
 <menuitem name="First Main Item">
   <menuitem name = "sub item 3"/>
   <menuitem name = "sub item 4"/>
 </menuitem>
</root>

在运行时进入树。

有关如何执行此操作的任何线索?

1 个答案:

答案 0 :(得分:1)

只需使用HTTPService向您的网址发送请求即可。 Tree组件使用List作为数据提供程序,因此您需要使用

dataProvider="{myXml.menuitem}"

将您的XML转换为List。不要忘记定义树的labelField

labelField="@name"

这是树:

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx" 
           minWidth="955" minHeight="600" 
           creationComplete="myService.send()">
<fx:Declarations>
    <s:HTTPService id="myService" url="com/xmltree/tree.xml" resultFormat="e4x" result="onServiceResult(event)"/>
</fx:Declarations>

<fx:Script>
    <![CDATA[
        import mx.rpc.events.ResultEvent;

        [Bindable]private var myXml:XML;

        private function onServiceResult(event:ResultEvent):void
        {
            myXml = event.result as XML;
        }
    ]]>
</fx:Script>

<s:HGroup x="20" y="20">
    <mx:Tree 
        dataProvider="{myXml.menuitem}" 
        labelField="@name"/>
</s:HGroup>

</s:Application>