Flex读取xml文件

时间:2023-01-29 20:46:08

 

 

Flex读取xml文件

文章分类:Web前端

主要有两个方法:

 

 

 

1)通过HTTPService

 

2)通过URLLoader

 

 

 

代码如下:

 

 

 

mxml代码

 

 

 

Java代码

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

<mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"creationComplete="init()">  

<mx:Script>  

  <![CDATA[  

   import mx.collections.ArrayCollection;  

   import mx.rpc.events.ResultEvent;  

   import mx.rpc.http.HTTPService;  

     

   public const xmlUrl:String = "config.xml";  

   [Bindable] private var colors1:ArrayCollection;  

   [Bindable] private var colors2:XML;  

     

   private function init():void{  

    //方法一:通过HTTPService  

    var service:HTTPService = new HTTPService();  

    service.url = xmlUrl;  

    service.addEventListener(ResultEvent.RESULT, resultHandler);  

    service.send();  

      

    //方法二:通过URLLoader  

    var request:URLRequest = new URLRequest(xmlUrl);  

    var loader:URLLoader = new URLLoader(request);  

    loader.addEventListener(Event.COMPLETE, loaderCompleteHandler);  

   }  

     

   private function resultHandler(event:ResultEvent):void{  

    colors1 = event.result.colors.color;  

   }  

     

   private function loaderCompleteHandler(event:Event):void{  

    colors2 = new XML(event.target.data);  

   }  

  ]]>  

</mx:Script>  

<mx:List x="100"y="150" dataProvider="{colors1}"labelField="name">  

</mx:List>  

<mx:List x="300"y="150" dataProvider="{colors2.color}"labelField="@name">  

</mx:List>  

</mx:Application> 

 

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

<mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"creationComplete="init()">

<mx:Script>

  <![CDATA[

   import mx.collections.ArrayCollection;

   import mx.rpc.events.ResultEvent;

   import mx.rpc.http.HTTPService;

  

   public const xmlUrl:String = "config.xml";

   [Bindable] private var colors1:ArrayCollection;

   [Bindable] private var colors2:XML;

  

   private function init():void{

    //方法一:通过HTTPService

    var service:HTTPService = new HTTPService();

    service.url = xmlUrl;

    service.addEventListener(ResultEvent.RESULT, resultHandler);

     service.send();

   

    //方法二:通过URLLoader

    var request:URLRequest = new URLRequest(xmlUrl);

    var loader:URLLoader = new URLLoader(request);

    loader.addEventListener(Event.COMPLETE, loaderCompleteHandler);

    }

  

   private function resultHandler(event:ResultEvent):void{

    colors1 = event.result.colors.color;

    }

  

   private function loaderCompleteHandler(event:Event):void{

    colors2 = new XML(event.target.data);

    }

  ]]>

</mx:Script>

<mx:List x="100"y="150" dataProvider="{colors1}"labelField="name">

</mx:List>

<mx:List x="300"y="150" dataProvider="{colors2.color}"labelField="@name">

</mx:List>

</mx:Application> 

 

config.xml文件

 

 

 

Java代码

<colors>  

<color name="LightGrey"value="#D3D3D3"/>  

<color name="Silver"value="#C0C0C0"/>  

<color name="DarkGray"value="#A9A9A9"/>  

<color name="Gray"value="#808080"/>  

<color name="DimGray"value="#696969"/>  

<color name="Black"value="#000000"/>  

</colors> 

 

<colors>

<color name="LightGrey"value="#D3D3D3"/>

<color name="Silver"value="#C0C0C0"/>

<color name="DarkGray"value="#A9A9A9"/>

<color name="Gray"value="#808080"/>

<color name="DimGray"value="#696969"/>

<color name="Black"value="#000000"/>

</colors>

 

实例:

 

 

 

登录

 

 

 

Java代码

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

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

   <mx:Script>  

       <![CDATA[  

           import mx.controls.Alert;  

           import mx.rpc.events.ResultEvent;  

           import flash.net.navigateToURL;  

              

           private function goLogin():void{  

                login.send();  

           }  

           private function resultHandler(event:ResultEvent):void{  

                var entry:String =event.result.users.a.toString();  

                if(entry == 'ok'){  

          

                }else{  

                    Alert.show('Username orPassword is/are wrong !');  

                }                 

            }  

       ]]>  

   </mx:Script>  

   <mx:HTTPService id="login" method="POST"showBusyCursor="true" url="flexlogin.php"result="resultHandler(event)">  

       <mx:request xmlns="">  

           <mx:username> {username.text} </mx:username>  

           <mx:userpwd> {userpwd.text} </mx:userpwd>  

       </mx:request>  

   </mx:HTTPService>  

      

   <mx:Panel width="310" height="265"layout="absolute" title="登录" fontSize="12"fontWeight="normal">  

       <mx:TextInput x="93" y="51"id="username" fontSize="12"/>  

       <mx:TextInput x="92" y="95"id="userpwd" fontSize="12"displayAsPassword="true"/>  

       <mx:Button x="73" y="154" label="登录" id="btn1"click="goLogin()" fontWeight="normal"fontSize="12"/>  

       <mx:Label x="32" y="53" text="用户名:"fontSize="12"/>  

       <mx:Label x="43" y="97" text="密码:"fontSize="12"/>  

       <mx:Button x="154" y="154" label="注册" fontSize="12"fontWeight="normal" id="btn2"/>  

       <mx:Label x="10" y="10" text="测试用 用户名 User 密码123456" fontSize="12" width="243"/>  

   </mx:Panel>  

      

</mx:Application> 

 

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

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

       <mx:Script>

              <![CDATA[

                     importmx.controls.Alert;

                     importmx.rpc.events.ResultEvent;

                     importflash.net.navigateToURL;

                    

                     privatefunction goLogin():void{

                            login.send();

                     }

                     privatefunction resultHandler(event:ResultEvent):void{

                            varentry:String = event.result.users.a.toString();

                            if(entry== 'ok'){

             

                            }else{

                                   Alert.show('Usernameor Password is/are wrong !');

                            }                         

                     }

              ]]>

       </mx:Script>

       <mx:HTTPServiceid="login" method="POST" showBusyCursor="true"url="flexlogin.php" result="resultHandler(event)">

              <mx:requestxmlns="">

                     <mx:username>{username.text} </mx:username>

                     <mx:userpwd>{userpwd.text} </mx:userpwd>

              </mx:request>

       </mx:HTTPService>

      

       <mx:Panelwidth="310" height="265" layout="absolute"title="登录"fontSize="12" fontWeight="normal">

              <mx:TextInputx="93" y="51" id="username"fontSize="12"/>

              <mx:TextInputx="92" y="95" id="userpwd"fontSize="12" displayAsPassword="true"/>

              <mx:Buttonx="73" y="154" label="登录" id="btn1" click="goLogin()" fontWeight="normal"fontSize="12"/>

              <mx:Labelx="32" y="53" text="用户名:" fontSize="12"/>

              <mx:Labelx="43" y="97" text="密码:" fontSize="12"/>

              <mx:Buttonx="154" y="154" label="注册" fontSize="12" fontWeight="normal"id="btn2"/>

              <mx:Labelx="10" y="10" text="测试用用户名 User 密码 123456"fontSize="12" width="243"/>

       </mx:Panel>

      

</mx:Application>

 

flexlogin.php

 

 

 

Php代码

<?php       

$return="";  

if(isset($_POST[username]) &&isset($_POST[userpwd])){  

 if("User"==$_POST[username] &&"123456"==$_POST[userpwd])  

   $return="ok";  

 else 

   $return="error";  

}  

$xml_return = '<users>';  

$xml_return.='<a>'.$return.'</a>';  

$xml_return.= '</users>';  

echo $xml_return; 

 

<?php    

$return="";

if(isset($_POST[username]) &&isset($_POST[userpwd])){

 if("User"==$_POST[username] &&"123456"==$_POST[userpwd])

   $return="ok";

 else

   $return="error";

}

$xml_return = '<users>';

$xml_return.='<a>'.$return.'</a>';

$xml_return.= '</users>';

echo $xml_return;

 

实例:

 

 

 

rss

 

 

 

Java代码

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

<mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"creationComplete="feedRequest.send()">  

   <mx:Script>  

       <![CDATA[  

           import flash.net.navigateToURL;  

       ]]>  

   </mx:Script>  

   <!-- 利用flex获取并显示数据2 -->  

   <mx:HTTPService id="feedRequest"url="flexXml.xml" useProxy="false"/>  

      

   <mx:Panel x="10" y="10" width="475"height="400" layout="absolute" title="{feedRequest.lastResult.rss.channel.title}">  

          

       <mx:DataGrid x="10" y="10" id="dgPosts"width="400"dataProvider="{feedRequest.lastResult.rss.channel.item}">  

           <mx:columns>  

                <mx:DataGridColumnheaderText="Posts" dataField="title"/>  

                <mx:DataGridColumnheaderText="Date" dataField="pubDate"width="150"/>  

           </mx:columns>  

       </mx:DataGrid>  

          

       <mx:LinkButton x="10" y="225" label="Readfull part" click="navigateToURL(newURLRequest(dgPosts.selectedItem.link));"/>  

       <mx:TextArea x="10" y="175" width="400"htmlText="{dgPosts.selectedItem.description}"/>  

          

   </mx:Panel>  

      

</mx:Application> 

 

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

<mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"creationComplete="feedRequest.send()">

       <mx:Script>

              <![CDATA[

                     importflash.net.navigateToURL;

              ]]>

       </mx:Script>

       <!--利用flex获取并显示数据2 -->

       <mx:HTTPServiceid="feedRequest" url="flexXml.xml"useProxy="false"/>

      

       <mx:Panelx="10" y="10" width="475" height="400"layout="absolute"title="{feedRequest.lastResult.rss.channel.title}" >

             

              <mx:DataGridx="10" y="10" id="dgPosts" width="400"dataProvider="{feedRequest.lastResult.rss.channel.item}">

                     <mx:columns>

                            <mx:DataGridColumnheaderText="Posts" dataField="title"/>

                            <mx:DataGridColumnheaderText="Date" dataField="pubDate"width="150"/>

                     </mx:columns>

              </mx:DataGrid>

             

              <mx:LinkButtonx="10" y="225" label="Read full part" click="navigateToURL(newURLRequest(dgPosts.selectedItem.link));"/>

              <mx:TextAreax="10" y="175" width="400"htmlText="{dgPosts.selectedItem.description}"/>

             

       </mx:Panel>

      

</mx:Application> 

flexXml.xml

 

 

 

Java代码

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

<rss version="2.0">  

   <!-- 该文件放到tomcatroot目录 -->  

   <channel>  

       <title>你好,flex获取并显示数据</title>  

 

       <item>  

           <title>hello world</title>  

           <description> this is a best exanple in flex,you can do it with me,and may you hava a wanderful future </description>  

           <link>http://hi.baidu.com/shiryu963</link>  

           <guid>http://hi.baidu.com/shiryu963</guid>  

           <category>general</category>  

           <pubDate>2009.6.8 12:17:11</pubDate>  

       </item>  

 

       <item>  

           <title>hello kava</title>  

           <description> best wishs to me,this is a best exanple in flex,youcan do it with me ,and may you hava a wanderful future</description>  

            <link>http://hi.baidu.com/shiryu963</link>  

           <guid>gech.com</guid>  

           <category>general</category>  

           <pubDate>2009.8.8 6:20:11</pubDate>  

       </item>  

 

       <item>  

           <title>hello shiryu</title>  

           <description> i hava a best wish to you,this is a best exanple inflex,you can do it with me ,and may you hava a wanderful future</description>  

           <link>http://hi.baidu.com/shiryu963</link>  

           <guid>hahahhahhahahah</guid>  

           <category>improtant</category>  

           <pubDate>2009.4.22 6:20:11</pubDate>  

       </item>  

   </channel>  

</rss>