异步加载新浪博客的RSS,节点展开时开始读取。

<?
xml version="1.0" encoding="utf-8"
?>


<
mx:Application 
xmlns:mx
="http://www.adobe.com/2006/mxml"
 layout
="absolute"
>

    
    
<
mx:Script
>

        
<![CDATA[

            import flash.utils.Dictionary;
            
            import mx.events.TreeEvent;
            import mx.rpc.AsyncToken;
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;
            
            private var dictionary:Dictionary = new Dictionary();
            
            private function itemOpenHandler(event:TreeEvent):void
            {
                var item:Object = event.item;
                if (item && item.@loadFlag == "false")
                {
                    service.url = item.@url;
                    var token:AsyncToken = service.send();
                    dictionary[token] = item;
                }
            }
            
            private function resultHandler(event:ResultEvent):void
            {
                var channel:XML = XML(dictionary[event.token]);
                var result:XML = XML(event.result);
                var items:XMLList = result..item;
                var item:XML = null;
                var node:XML = null;
                channel.@loadFlag = "true";
                delete channel.*;
                for each (item in items)
                {
                    node = <node/>;
                    node.@label = item.title;
                    channel.appendChild(node);
                }
            }
            
            private function faultHandler(event:FaultEvent):void
            {
                var channel:XML = XML(dictionary[event.token]);
                channel.@loadFlag = "true";
                delete channel.*;
            }
            
            private function getLabel(item:Object):String
            {
                var node:XML = XML(item);
                if (node.name().toString() == "item")
                    return node.title;
                else
                    return node.@label;
            }
        
]]>

    
</
mx:Script
>

    
    
<
mx:XML 
id
="blog"
>

        
<
root 
label
="新浪博客"
>

            
<
channel 
label
="文化"
 url
="http://rss.sina.com.cn/blog/index/cul.xml"
 loadFlag
="false"
>

                
<
node 
label
="加载中..."
 
/>

            
</
channel
>

            
<
channel 
label
="八卦"
 url
="http://rss.sina.com.cn/blog/index/ent.xml"
 loadFlag
="false"
>

                
<
node 
label
="加载中..."
 
/>

            
</
channel
>

            
<
channel 
label
="情感"
 url
="http://rss.sina.com.cn/blog/index/feel.xml"
 loadFlag
="false"
>

                
<
node 
label
="加载中..."
 
/>

            
</
channel
>

            
<
channel 
label
="观点"
 url
="http://rss.sina.com.cn/blog/index/other.xml"
 loadFlag
="false"
>

                
<
node 
label
="加载中..."
 
/>

            
</
channel
>

            
<
channel 
label
="财经"
 url
="http://rss.sina.com.cn/blog/index/stocks.xml"
 loadFlag
="false"
>

                
<
node 
label
="加载中..."
 
/>

            
</
channel
>

        
</
root
>

    
</
mx:XML
>

    
    
<
mx:HTTPService 
id
="service"
 concurrency
="multiple"
 resultFormat
="xml"
 
        result
="resultHandler(event)"
 fault
="faultHandler(event)"
 
/>

    
    
<
mx:Tree 
id
="tree"
 width
="400"
 height
="500"
 
        dataProvider
="{blog}"
 labelField
="@label"
 
        itemOpen
="itemOpenHandler(event)"
 
/>

    

</
mx:Application
>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值