【原创】flex in action (三)flex对xml数据进行处理二

【原创】flex in action (三)flex对xml数据进行处理二

本讲的一个重点。ArrayCollection对一个字段的一个数据的取得:xmls.getItemAt(0).name.toString()。
这东西弄了我很久,大概是受Java的影响吧。
首先编写xml。在src下建立xml文件夹,然后建立一个student.xml的文件。
文件内容:

 1  <? xml version="1.0" encoding="UTF-8" ?>
 2  < persons >
 3       < person >
 4           < name > 金浩 </ name >
 5           < sex > man </ sex >
 6           < age > 23 </ age >
 7           < clazz > 数学一班 </ clazz >
 8       </ person >
 9      
10       < person >
11           < name > 张伟 </ name >
12           < sex > man </ sex >
13           < age > 22 </ age >
14           < clazz > 英语四班 </ clazz >
15       </ person >
16           < person >
17           < name > 蒋天傲 </ name >
18           < sex > man </ sex >
19           < age > 23 </ age >
20           < clazz > 计算四班 </ clazz >
21       </ person >
22      
23       < person >
24           < name > 熊敏之 </ name >
25           < sex > man </ sex >
26           < age > 23 </ age >
27           < clazz > 计算机一班 </ clazz >
28       </ person >
29           < person >
30           < name > 熊超 </ name >
31           < sex > man </ sex >
32           < age > 23 </ age >
33           < clazz > 计算二班 </ clazz >
34       </ person >
35      
36       < person >
37           < name > 张洋 </ name >
38           < sex > woman </ sex >
39           < age > 22 </ age >
40           < clazz > 英语四班 </ clazz >
41       </ person >
42           < person >
43           < name > 朱宇 </ name >
44           < sex > man </ sex >
45           < age > 23 </ age >
46           < clazz > 英语一班 </ clazz >
47       </ person >
48      
49       < person >
50           < name > 夏政 </ name >
51           < sex > man </ sex >
52           < age > 23 </ age >
53           < clazz > 计算机四班 </ clazz >
54       </ person >
55  </ persons >

上面都我大学同学。呵呵.
然后就是建立一个mxxml application。
添加一个panel,八个label,2个button。
如:图。

代码:
 1  <? xml version="1.0" encoding="utf-8" ?>
 2  < mx:Application  xmlns:mx ="http://www.adobe.com/2006/mxml"  layout ="absolute"  creationComplete ="xmlData.send()" >
 3  < mx:HTTPService  id ="xmlData"  url ="xml/student.xml"  result ="resultHand(event)" >
 4  </ mx:HTTPService >
 5       < mx:Script >
 6           <![CDATA[
 7              import mx.controls.Alert;
 8              import mx.collections.ArrayCollection;
 9              import mx.rpc.events.ResultEvent;
10          [Bindable]
11              private var xmls:ArrayCollection = new ArrayCollection();
12          [Bindable]
13              public var i:int = 0;
14              
15              private function resultHand(event:ResultEvent):void{
16                  xmls = event.result.persons.person;
17              }
18 
19              private function upClick():void{
20                  if(i == 0){
21                      Alert.show("已经是第一个同学了");
22                  }else
23                      i--;
24              }
25              private function downClick():void{
26                  if(i == xmls.length-1){
27                      Alert.show("已经是最后一个同学了");
28                  }else
29                      i++;
30              }
31           ]]>
32       </ mx:Script >
33      
34       < mx:Panel  x ="160"  y ="75"  width ="291"  height ="296"  layout ="absolute"  
35          title ="学生信息"  id ="message"  fontSize ="14"  fontWeight ="bold"  fontStyle ="normal" >
36           < mx:Label  x ="49.5"  y ="39"  text ="姓名:" />
37           < mx:Label  x ="49.5"  y ="70"  text ="年龄:" />
38           < mx:Label  x ="49.5"  y ="101"  text ="性别:" />
39           < mx:Label  x ="49.5"  y ="132"  text ="班级:"  width ="50" />
40           < mx:Button  x ="49.5"  y ="183"  label ="上一个"  id ="up"  click ="upClick()" />
41           < mx:Button  x ="150.5"  y ="183"  label ="下一个"  id ="down"  click ="downClick()" />
42           < mx:Label  x ="116.5"  y ="39"  width ="105"  id ="nam"  text ="{xmls.getItemAt(i).name.toString()}" />
43           < mx:Label  x ="116.5"  y ="70"  width ="105"  id ="age"  text ="{xmls.getItemAt(i).age.toString()}" />
44           < mx:Label  x ="116.5"  y ="101"  width ="105"  id ="sex"  text ="{xmls.getItemAt(i).sex.toString()}" />
45           < mx:Label  x ="116.5"  y ="132"  width ="105"  id ="clazz"  text ="{xmls.getItemAt(i).clazz.toString()}" />
46       </ mx:Panel >
47 
48  </ mx:Application >
49 
没做注释是因为觉得太简单了。呵呵。
查询:

当到最后一个的时候,弹出。对话框。


ok啦。在这个例子中我没有在用MX:MODEL 调用xml文件了,而采用的是。MX:HTTPSERVICE.
书上说的区别是,第一种方法把xml数据“固化”到swf中了,
这一点没有去深究。
而第二中则采用的是,只有再调用的时候才去。
现在做个测试。
如果我在运行的情况下,在xml上增加,删除一个同学,看会怎样。
刚做完测试,增加和删除一个都对其没有影响。
不懂书上是什么个意思。还有使用ArrayCollection和Array的区别,网络上说ArrayCollection可以动态的调整。
如果我在程序中加入一个remove同学的话,ArrayCollection保证是执行后的结果。
这个就不做测试了。
反正我是觉得现在这个demo很有用。

你可能感兴趣的:(【原创】flex in action (三)flex对xml数据进行处理二)