0

帮助,

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

在运行时进入一棵树。

关于如何做到这一点的任何线索?

4

1 回答 1

1

只需使用 HTTPService 向您的 URL 发送请求。Tree 组件使用 List 作为数据提供者,因此您需要使用

dataProvider="{myXml.menuitem}"

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

labelField="@name"

这是树:

在此处输入图像描述

<?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>
于 2013-07-28T19:05:39.067 回答