WebService返回xml,转换成Array,绑定DataGrid

dee.mxml
<? xml version = " 1.0 "  encoding = " utf-8 " ?>
< mx:Application xmlns:mx = " http://www.adobe.com/2006/mxml "  layout = " vertical "  creationComplete = " AvitHandle() " >
    
< mx:Script >
        
<! [CDATA[
            import mx.rpc.events.FaultEvent;
            import mx.rpc.soap.WebService;
            import mx.rpc.events.ResultEvent;    
            import mx.controls.Alert;
            
            
public  function AvitHandle(): void
            {
                var web:WebService 
=   new  WebService();
                web.wsdl 
=   " http://localhost:2250/flex%203.0%20asp.net%20test/WebServiceTest.asmx?wsdl " ;
                
// 必须调用loadwsdl方法下载ws说明文件,否则即使调用webservice的方法也是没有反应的
                web.loadWSDL();
                
// 添加成功调用侦听
                web.addEventListener(ResultEvent.RESULT,wsHandle);
                
// 添加错误调用侦听
                web.addEventListener(FaultEvent.FAULT, fault);
                web.Readxml.send();
            }
            
            
// 成功调用处理函数
             public  function wsHandle(e:ResultEvent): void
            {
                
// ddd.text = e.result as String;    
                var menus:XML  =  XML(e.result  as  String);
                var results:XMLList 
=  menus.children();
                                
                var array:Array 
=  ElementToAttr(results);
                
                DataGrid1.dataProvider 
=  array;
            }
            
            
/* 将如下类型的xml转换成array,以便可以作为DataProvider给DataGrid,Tree等组件绑定数据        
            <?xml version="1.0" encoding="utf-8" ?> 
            <Items>
                <Item>
                <name>nam1</name> 
                  <grender>boy</grender> 
                  <from>guangxi</from> 
                  </Item>
                <Item>
                  <name>nam2</name> 
                  <grender>boy</grender>
                  <from>shanghai</from>
                </Item>
            </Items>
            
*/
            
public  function ElementToAttr(results:XMLList):Array
            {
                var array:Array
= new  Array();
                
for  each(var child:XML  in  results){
                    var obj:Object
= new  Object();
                    
                    obj[child.nodeKind()]
= child[child.nodeKind()];
                    
for  each(var ite:XML  in  child.children()){
                        obj[ite.name().toString()]
= child[ite.name().toString()];
                    }
                    
                    
/*
                    obj["name"]=child.name;
                    obj["grender"]=child.grender;
                    obj["from"]=child.from;
                    
*/
                    
                    array.push(obj);                    
               }
               
return  array;
            }
            
            
// 错误处理函数
             public  function fault(e:FaultEvent): void
            {
                Alert.show(e.fault.faultString,
' Error ' )
            }
        ]]
>
    
</ mx:Script >
    
< mx:Label text = " Label "  id = " ddd "  fontSize = " 12 " />
    
< mx:DataGrid id = " DataGrid1 " >
        
< mx:columns >
            
< mx:DataGridColumn headerText = " 姓名 "  dataField = " name " />
            
< mx:DataGridColumn headerText = " 性别 "  dataField = " grender " />
            
< mx:DataGridColumn headerText = " 籍贯 "  dataField = " from " />
        
</ mx:columns >
    
</ mx:DataGrid >
</ mx:Application >

WebService方法
    [WebMethod]
    
public   string  Readxml()
    {
        
string  str;
        str 
=   " <?xml version=\ " 1.0 \ "  encoding=\ " utf - 8 \ "  ?> " ;
        str 
+=   " <Items> " ;

        
for  ( int  i  =   1 ; i  <   10 ; i ++ )
        {
            str 
+=   " <Item> " ;
            str 
+=   " <name>nam " +  i  + " </name> " ;
            str 
+=   " <grender>boy "   +  i  +   " </grender> " ;
            str 
+=   " <from>shanghai "   +  i  +   " </from> " ;
            str 
+=   " </Item> " ;
        }

        str 
+=   " </Items> " ;

        XmlDocument dcxml 
=   new  XmlDocument();
        dcxml.LoadXml(str);

        
return  str;
    }

转载于:https://www.cnblogs.com/timy/archive/2008/06/28/1231711.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值