### Flex与XML操作详解 #### 一、E4X与ActionScript 3.0的集成 E4X(ECMAScript for XML)是ECMAScript标准的一个扩展,它被引入到ActionScript 3.0中,极大地简化了XML数据处理的过程。在Flash 5时,ActionScript首次引入了一些XML处理能力,但在当时这些能力非常有限。随着ECMAScript标准的不断发展,特别是ECMA-262版本的发布,ActionScript 3.0采用了E4X规范,从而提供了更为强大的XML处理功能。 在ActionScript 3.0中,处理XML的方式有了显著的变化。与之前的ActionScript 2.0相比,不再使用XML类进行数据解析,而是引入了一系列新的类来支持XML处理,包括`XML`, `XMLNode`, `XMLParser`, `XMLTag`等,这些类都位于`flash.xml`包下。这意味着开发者可以更加方便地创建、解析、遍历和修改XML文档。 #### 二、XML的创建与解析 在ActionScript 3.0中,可以直接通过变量声明来创建XML对象: ```actionscript var myXML:XML = <order> <itemid='1'> <menuName>burger</menuName> <price>3.95</price> </itemid> <itemid='2'> <menuName>fries</menuName> <price>1.45</price> </itemid> </order>; ``` 此外,也可以通过`new XML()`构造函数来创建一个XML实例: ```actionscript var myXML:XML = new XML("<order><itemid='1'><menuName>burger</menuName><price>3.95</price></item></order>"); ``` 如果需要动态创建XML元素,可以使用模板字符串: ```actionscript var tagname:String = "item"; var attributename:String = "id"; var attributevalue:String = "5"; var content:String = "Chicken"; var x:XML = <{tagname} {attributename}="{attributevalue}">{content}</{tagname}>; trace(x.toXMLString()); // Output: <item id="5">Chicken</item> ``` 对于从外部源加载XML数据的需求,例如WebService或RSS feed,可以通过以下方式实现: ```actionscript var myXML:XML = new XML(); var XML_URL:String = "http://www.example.com/Sample3.xml"; var myXMLURL:URLRequest = new URLRequest(XML_URL); var myLoader:URLLoader = new URLLoader(myXMLURL); myLoader.addEventListener("complete", xmlLoaded); function xmlLoaded(evtObj:Event):void { var myXML:XML = XML(myLoader.data); trace("Data loaded."); } ``` #### 三、XML数据的查询与修改 E4X使得在ActionScript 3.0中查询和修改XML数据变得更加直观和简洁。使用点符号`.`和属性符号`@`可以直接访问和修改XML节点及其属性: ```actionscript // 获取第一个item的menuName值 trace(myXML.item[0].menuName); // Output: burger // 获取第一个item的id值 trace(myXML.item[0].@id); // Output: 1 // 获取id为2的item的menuName值 trace(myXML.item.(@id == "2").menuName); // Output: fries // 获取menuName为burger的item的price值 trace(myXML.item.(menuName == "burger").price); // Output: 3.95 ``` 此外,还可以使用`appendChild()`方法向XML文档中添加新的元素: ```actionscript var newItem:XML = <itemid="3"> <menuName>mediumcola</menuName> <price>1.25</price> </itemid>; myXML.appendChild(newItem); ``` 可以使用属性符号`@.`来修改XML节点的内容: ```actionscript myXML.item[0].menuName = "regularburger"; myXML.item[1].menuName = "smallfries"; myXML.item[2].menuName = "mediumcola"; ``` 通过这种方式,E4X为ActionScript 3.0中的XML处理提供了强大而灵活的支持,使得开发人员能够更高效地处理XML数据。
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助