1.7 在Flex中操作XML
XML(eXtensible Markup Language,可扩展标记语言)常用于数据描述、数据封装和数据结构化处理。XML提供了简单和易读的数据组织方式,可以更加方便和标准地对数据进行读取、传输和操作。Flex技术中使用的MXML也是基于XML的一种标签规范。
1.7.1 XML在Flex中的应用
在Flex中处理XML数据需要理解一些基本的XML概念。在本书中会涉及到的XML概念如下。
1. 元素
元素是XML数据中的一个数据条目,通过一对标签和标签内的子元素定义。XML的元素中可以包含文本数据或其他的元素,也可以为空。
2. 空元素
空元素是不包含子元素的XML元素。通常XML的空元素可以写成自封闭的格式,例如<emptyitem/>。
3. 文档
文档是一个独立的XML结构。一个XML文档可以包含任意数量的XML元素,但是必须只包含唯一的根元素。
4. 节点
节点和元素的意义相同。
5. 属性
属性是对标签内的一个XML元素条目的命名。通过 属性名=“值”的格式进行定义。可以看作是位于元素内部的子元素。
Flex为处理XML提供了必要的支持,ActionScript类XML和XMLList用于建立Flex的XML对象。XML类用于描述单一的XML对象,如XML的一个节点数据以及这个节点的所有Attribute值和下级节点信息;XMLList类用于描述一组XML元素,这组元素需要有相同的XML标签,通过XMLList可以灵活地对XML元素集合进行添加、删除、修改和查询操作。
通过MXML我们可以使用<mx:XML>标签和<mx:XMLList>标签构造静态的XML结构。ActionScript则可以对MXML的静态XML对象或外部文档进行各种数据处理操作,对于大部分XML数据的处理操作都是通过ActionScript完成。
通常ActionScript可以完成下列关于XML的操作:
- 构建XML文档,添加XML元素和值。
- 访问XML元素,属性(Attribute)和值。
- 查询XML元素。
- 遍历XML数据的集合。
- 进行XML类型和String类型的相互转换。
- 操作XML命名空间。
- 读取外部的XML文件。
1.7.2 通过E4X处理XML
我们已经了解到ActionScript是基于标准的ECMAScript语言规范构建的,因此也沿袭了ECMAScript处理XML的API子集ECMAScript for XML,简称E4X。E4X包含下列类型用于处理XML:XML、XMLList、QName和Namespace。
1. 创建E4X的XML对象
E4X对于XML的支持遵循着简洁性、高聚合性和易用性的设计原则。因此使用E4X并没有很高的难度。首先我们来看看如何用E4X创建XML类型:
var xmlData:XML = <product> <item id = "0001"> <name>Thinkpad</name> <price>24000</price> </item> <item id = "0001"> <name>Thinkpad</name> <price>24000</price> </item> </product>
上述代码创建了一个变量名为xmlData的E4X的XML对象。构建方式是非常简单的,和定义一个简单类型的变量没有任何区别,直接把XML的内容按顺序写在等号右边即可,E4X会在编译ActionScript时对XML的合法性进行验证,不合法的XML会在编译过程中报错。
2. 操作E4X的XML类型
E4X的XML对象描述了XML的数据结构、节点、文本节点、属性/属性值、操作指令、注释信息等内容。不包含操作指令和注释信息的XML对象被定义为简单XML对象,在构建XML对象时,可以通过设定下列语句来实现简单对象的创建:
XML.ignoreComments = true; XML.ignoreProcessingInstructions = true;
包含操作指令和注释信息的XML对象被定义为复杂XML对象,可以通过comments()方法和processingInstructions()方法来处理注释和操作指令内容。
包括上述两个属性,E4X的XML对象共包含5个静态属性,用于初始化设定或定制操作XML的具体格式。属性列举如下。
- ignoreComments:
该属性用于指定是否处理XML注释。
- ignoreProcessingInstructions:
该属性用于指定是否处理XML操作指令。
- ignoreWhitespace:
该属性用于指定是否处理XML中的空格符。
- prettyIndent:
该属性用于指定对toString()方法是否进行适当缩进。
- prettyPrinting:
该属性用于指定对toXMLString()方法是否进行适当缩进。
XML对象结构的解析和处理通过E4X的方法来实现。E4X为XML对象提供了非常完善的方法支持。通过children()、elements()、parent()方法可以引用到XML对象之中的XMLList对象。本书中对E4X的具体API不详细讲解,读者如有需要可参考ECMA357用户手册。
3. 操作E4X的XMLList类型
XMLList类型表明这是一个具有相同结构的XML元素集合。XMLList对象同样支持children()、elements()、parent()等针对上下级节点的索引。同时,XMLList对象还支持attribute()、attributes()方法来操作自身的属性信息。
本文链接:http://www.blueidea.com/tech/multimedia/2008/6336.asp
出处:蓝色理想
责任编辑:bluehearts
上一页 使用Adobe Flex Builder 下一页
◎进入论坛RIA设计与应用版块参加讨论
|