概览Flex中与XML相关的类和组件
MXML 组件

ActionScript

描述

<mx:XML>

XML

使用单个节点保存标准 XML 数据

<mx:XMLList>

XMLList

保存由多个根节点保存的 XML 数据

<mx:XMLListCollection>

XMLListCollection

具有集合 (collection) 能力的 XMLList 版本。

例如,当 XMLListCollection 的状态发生变化时,它可以调度相关事件。


XML组件
XML组件是用于与XML数据进行交互的基础机制。它允许你在你的程序代码中植入你的XML数据,或引用一个外部的XML源文件。但是,由于XML组件不是一个集合(collection)组件,所它不具有高级数据同步(绑定)和自动数据更新感知的能力。

使用XML组件
要实现XML组件,可以直接植入XML字面量来自外部文件的源代码。如下所示:
< mx:Application xmlns:mx ="http://www.adobe.com/2006/mxml" >
< mx:XML id ="usersXML" >
< users >
< user id ="1" >Tariq Ahmed </ user >
< user id ="2" >Jon Hirschi </ user >
</ users >
</ mx:XML >
</ mx:Application >

上面的方式同通常用于保存程序的配置信息。但是引用外部的数据或配置信息的做法更常见。要将外部的源代码引入到你的程序,可以使用XML对象的source属性。如下所示:
< mx:Application xmlns:mx ="http://www.adobe.com/2006/mxml" >
< mx:XML id ="usersXML" source ="users.xml" />
</ mx:Application >
注意:这种引入将会在编译期把外部源文件中的代码合并到程序中,这意味着任何对外部XML源文件的改变将不会反射到程序中,除非重新编译程序。

XML类
XML类与XML组件类似,但有一点关键的不同之处,即不能让ActionScript的XML对象在编译器植入一个XML文件。

使用XML类
< mx:Application xmlns:mx ="http://www.adobe.com/2006/mxml" >
< mx:Script >
<![CDATA[
public var usersXML:XML=
< users >
< user id ="1" >Tariq Ahmed </ user >
< user id ="2" >Jon Hirschi </ user >
</ users >
]]>
</ mx:Script >
</ mx:Application >
这种做法与使用XML组件并无大异,但ActionScript可以灵活的被保存在外部的脚本文件中,并在程序中引入。例如,你将上面的代码保存在loadUsersVariable.as文件中,然后在程序中引入:
< mx:Script source ="loadUsersVariable.as" />
这种做法可以提高代码的可复用性。

将对象转换为XML
可以使用类初始化函数(即构造函数)将包含XML数据的对象转换成一个真正的XML对象,如下所示:
public var simpleString:String = "<users><user>Tariq Ahmed</user></users>";
public var usersXML:XML = new XML(simpleString);
由于XML类没有source属性,所以你不能加载一个外部文件。如果了解在编译期的XML,就可以很好的在任何地方使用XML组件。否则,如果你要动态的加载一个外部文件,你可以结合使用诸如HTTPService或URLLoader类来实现这个目的。

XML类属性
XML类有几个静态属性。这些属性是固定的全局设定,因此你不能为每个实例分别设定。当一个属性被改变,这个变化将作用于所有XML类的实例对象。
属性

类型

描述

ignoreComments

Boolean

指定是将注释作为 XML 源文件的一部分还是将其过滤。默认值为 true

ignoreProcessingInstructions

Boolean

指定是将处理指令作为 XML 源文件的一部分还是将其过滤。默认值为 true

ingoreWhiteSpace

Boolean

决定文本前后的空白字符将被保留还是被剥离。默认值为 true ,即剥离空白字符。

prettyIndent

Int

定义每个层级的缩进量 ( prettyPrinting 被设定为 true 时起效 ) 。默认值为 2

prettyPrinting

Boolean

当调用 toString() toXMLString() 方法输出时,对输出内容进行结构化处理 ( 层级缩进