帮助,
在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>
在运行时进入树。
有关如何执行此操作的任何线索?
答案 0 :(得分:1)
只需使用HTTPService向您的网址发送请求即可。 Tree组件使用List作为数据提供程序,因此您需要使用
dataProvider="{myXml.menuitem}"
将您的XML转换为List。不要忘记定义树的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>