您所在的位置:读书频道 > 设计开发 > 其它开发 > 6.7 E4X入门简介

6.7 E4X入门简介

2009-07-20 09:38 张骥/涂颖芳译 人民邮电出版社 我要评论(0) 字号:T | T
一键收藏,随时查看,分享好友!

《Flex 3程序设计》第6章Flex与XML,在阅读本章的过程中,当学习将Flex连接到XML时,强烈建议大家多尝试一下之前学习的构建GUI技术。大家很快就会发现,适用于某个控件的东西也同样适用于其他很多控件。本章会把很多零散的东西集合起来。本节为大家介绍E4X入门的简介。

AD:

6.7 E4X入门简介

到目前为止,ActionScript还没有办法直接处理XML数据,只能把它转换成ArrayCollection,也就是我们刚才所看到的。

E4X(代表ECMAScript for XML)是一种用简化的方式读取和查询XML数据的新兴标准,这种方法无需使用ArrayCollection。

我在本章前面讲过,ArrayCollection会把XML文件的每个结点转换成单独的对象。我们可以通过使用Flex Builder调试功能来看一个这样的示例。

(1) 根据需要,将HTTPService标签中的URL重新改成assets/books.xml。

 

我们可能要给它来个快速的测试以确保一切正常。

(2) 在bookHandler函数的结束大括号那一行,用右键(或按Ctrl键)单击左边缘并选择Toggle Breakpoint(如图6-8所示)。

 
(点击查看大图)图6-8 断点的放置

(3) 通过单击我们一直使用的Run Application按钮右边的Debug按钮,在Debugging模式下运行Flex。

(4) 浏览器打开之后,回到Flex Builder。此时应该会看到一个对话框,它告诉我们它需要切换到Debugging透视图,如图6-9所示。

 
(点击查看大图)图6-9 Confirm Perspective Switch对话框

(5) 单击Yes按钮。

现在我们是在Flex Debugging透视图中。

(6) 在右上角应该会看到Variables视图。双击Variables选项卡将其最大化。

(7) 展开evt分支。它对应的是我们在函数中设置的ResultHandler事件。

(8) 展开evt下面的result分支。

(9) 展开books,然后展开stock。注意这一切都与我们设置函数以及请求XML数据的方式一致(如图6-10所示)。

可以看出,result.books.stock被转换成了ArrayCollection,这个ArrayCollection有10个元素,索引号从0开始,每个元素都是一个Object(Flex使用的类是mx.utils.ObjectProxy)。这与我此前所说的相符。

 
(点击查看大图)图6-10 Variables视图中呈现的XML数据


(10) 若要停止调试,请关闭浏览器。

(11) 双击Variables视图,将它恢复到正常大小。

留在Debugging透视图中。

(12) 前往HTTPService标签并添加属性resultFormat = "e4x"。

 

(13) 再次运行调试器,并回到Variables视图。

现在,当我们像以前那样层级而下时,会看到实际的数据而不是神秘的代码,如图6-11所示。

事实上,请注意ArrayCollection不见了。

当我们使用E4X格式时,Flex不会使用ArrayCollection类。取而代之的是,数据会转换成一种ActionScript固有的格式,这种格式可以轻松地用于查询和显示。

 
(点击查看大图)图6-11 E4X格式下的Variables视图

(14) 如果需要的话,请通过双击Variables选项卡让Variables视图恢复到常规的大小。

(15) 通过单击Debugging视图中的红色方形按钮或关闭浏览器会话(在Mac机上也可以按Cmd+F2键)来结束调试会话。

(16) 回到Development透视图。

(17) 关闭断点。

为了使用E4X格式,我们需要做一些小的修改。首先,变量bookStock的类型不能是ArrayCollection,因为E4X不使用ArrayCollection。

(18) 将变量bookStock的类型改成XMLList。

XMLList是在处理多个XML元素或结点时所使用的类。如果用XML类处理多个对象就会出错。XML类的作用是操作XML文件内的单个元素以及运用新的E4X标准,即我们正在讨论的内容。XML和XMLList之间的差别将在本章后面变得显而易见。

我们通过几个示例来看看E4X是怎么帮助我们的。眼下,我们将使用DataGrid控件来显示数据。

假设我们只想看见书名<name>。

(19) 将函数修改如下:

 

result和name之间的两个点叫做后代访问符。这表示访问与<name>结点相关的任意数据,不管它离根结点有多远。换句话说,我们不需要像以前必须在ActionScript 2.0中所做的那样明确地层级而下地获得数据。

(20) 运行代码,应该会看到一个图书清单。

(21) 如果只想看作者清单,就用author代替name并运行应用程序。

E4X真正的强大之处体现在它能查询基于某个标准的XML数据。举个例子,假设我们只想看到类别为Fiction(这里是区分大小写的)的图书。

(22) 将代码更改如下:

 

注意我们使用了双等号(比较操作符),就像在ActionScript中编写if语句时那样。

(23) 现在运行代码,应该只会看到所请求的图书。

请记住这里是区分大小写的。如果使用的是fiction,得到的结果就为空。

有关E4X语法的方方面面可以写上一整本书。虽然我们还将在本书剩余的章节里讲到这个主题的各个方面,但大家也可以在下面的网址学到更多的知识:

www.ecma-international.org/publications/files/ECMA-ST/Ecma-357.pdf

现在,我们来看看XML数据的另一个方面。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节

网友评论TOP5

查看所有评论(

提交评论

  1. Linux服务器配置全程实录
  2. 揭秘--优秀PPT这样制作

热点专题

更多>>

读书

Struts 2权威指南:基于WebWork核心的MVC开发
本书所介绍的Struts 2已经完全超出了Struts 1框架原有的高度,Struts 2建立在Struts 1和WebWork两个框架整合的基础之上,因此提

51CTO旗下网站

领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 移动互联网生活门户 灵客风LinkPhone