zoukankan      html  css  js  c++  java
  • 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;
        }
  • 相关阅读:
    day29
    day28
    day27
    查询区间内有多少个不同的数(线段树/树状数组)
    树状数组变形:带区间修改的树状数组
    特征提取:PCA主成分分析法和NMF非负矩阵分解法
    Trie树
    Logistic&Softmax回归
    高斯贝叶斯分类器(GNB实战)
    朴素贝叶斯分类器(伯努利贝叶斯+高斯贝叶斯+多项式贝叶斯)
  • 原文地址:https://www.cnblogs.com/timy/p/1231711.html
Copyright © 2011-2022 走看看