找到个不错的XML对象介绍,收藏下:
在ActionScript 3.0中,提供了三种最基本的方法创建XML对象。
q 第一种通过表达式的方式直接建立XML对象。如下代码所示
var flexXML:XML=
<RIA>
<FlashPlayer>
<Flash>Flash CS3</Flash>
<Flex>Flex3</Flex>
</FlashPlayer>
<Ajax>
<GoogleAjax>GoogleAjax1.0</GoogleAjax>
</Ajax>
</RIA>
注意:使用XML表达式的时候与一般的赋值语句不同。语句结束没有“;”标识符,直接结束。XML字符串也不需要通过引号或者单引号进行限定。
q 第二种方式是通过XML对象的构造函数的方式构建XML对象。如下代码所示。
var flexXMLStr:String="<RIA>"
+"<FlashPlayer>"
+"<Flash>Flash CS3</Flash>"
+"<Flex>Flex3</Flex>"
+"</FlashPlayer>"
+"<Ajax>"
+"<GoogleAjax>GoogleAjax1.0</GoogleAjax>"
+"</Ajax>"
+"</RIA>";
var flexXML1:XML=new XML(flexXMLStr);
q 第三种方式是通过加载外部XML文件的方式构建XML对象。这种加载的本质其实也是使用构造函数的方式进行加载。XML文件RIA.xml文件内容如下。
<RIA>
<FlashPlayer>
<Flash>Flash CS3</Flash>
<Flex>Flex3</Flex>
</FlashPlayer>
<Ajax>
<GoogleAjax>GoogleAjax1.0</GoogleAjax>
</Ajax>
</RIA>
可以通过制定RIA.xml文件位置的方式加载该文件内容到XML对象中,。代码如下所示。
var flexXML2:XML;
var flexLoader:URLLoader = new URLLoader();
var flexRequest:URLRequest = new URLRequest("RIA.xml");
function onComplete(event:Event):void
{
var flexLoader:URLLoader = event.target as URLLoader;
if (flexLoader != null)
{
flexXML2 = new XML(flexLoader.data);
trace(flexXML2.toXMLString());
}
else
{
trace("加载错误!");
}
在上面的代码中加载外部的资源是异步进行的。需要声明一个事件处理机制,通过这个事件监听来响应加载结束XML的事件。
注意:在创建XML对象时,XML内容必须遵循XML的规范。读者可以在www.w3c.org网站上详细察看这个规范。
以上三种方式是最常用的创建XML对象的方法。还会有一些特殊的创建XML对象的方法,例如使用XMLSocket对象构建XML对象。XMLSocket对象会在稍后内容讲解。
创建的XML对象中,有一系列属性和方法进行简单的XML处理。常用属性如表4.5所示。常用方法如表所示。
表 XML对象常用属性
属性名称 | 属性分类 | 属性说明 |
ignoreComments | 注释与说明属性 | 取值ture或false,表明读取XML时是否忽略注释。 |
ignoreProcessingInstructions | 注释与说明属性 | 取值ture或false,表明读取XML时是否忽略说明和介绍。 |
ignoreWhitespace | 空白 | 取值ture或false,表明是否忽略XML内容中,纯粹的空白。 |
prettyIndent | 格式属性 | 取值true或false,表明是否输出成字符串时带有缩紧。 |
prettyPrinting | 格式属性 | 取值true或false,表明打印输出时有严格的打印格式。 |
表 XML对象常用方法
方法名称 | 方法分类 | 方法说明 |
appendChild | 操作节点方法 | 添加节点到XML对象的尾部。参数为一个XML对象或者XML表达式。 |
child | 操作节点方法 | 返回XML对象的子节点,参数为子节点的名称 |
children | 操作节点方法 | 返回XML对象的所有子节点,返回类型为XMLList类型。 |
elements | 操作节点方法 | 返回XML对象的子节点或者属性,参数为子节点或属性名称。 |
insertChildAfter | 操作节点方法 | 插入节点到指定节点之后,参数为指定节点。 |
insertChildBefore | 操作节点方法 | 插入节点到指定节点之前,参数为指定的节点。 |
parent | 操作节点方法 | 返回当前节点的父节点。 |
prependChild | 操作节点方法 | 返回当前节点的前一个节点。 |
attribute | 操作属性方法 | 返回指定的属性,参数为指定的属性名称。 |
attributes | 操作属性方法 | 返回XML对象的所有属性。 |
hasComplexContent | 内容操作方法 | 判断当前节点内容是否为复杂内容,返回值为true或false。复杂内容是指包括有子节点的XML对象。 |
hasSimpleContent | 内容操作方法 | 判断当前节点内容是否为简单内容,返回指为true或false。简单内容是指单一的字符串内容。 |
toString | 内容操作方法 | 将XML对象输出为字符串内容。 |
toXMLString | 内容操作方法 | 输出为XML字符串的内容。 |
copy | 对象操作方法 | 拷贝XML对象的副本,返回值为当前节点的内容。 |
valueOf | 对象操作方法 | 返回指定节点内容,不包括节点的表示。 |
length | 对象操作方法 | 返回当前XML对象下一级节点个数。 |
在操作XML对象的过程中还会经常使用XMLList对象。XMLList对象的方法与XML对象很像,使用起来具有统一性。XML的整体结构是一个树型结构,所以在使用树型结构的过程中,通过XML和XMLList对象的使用可以达到整体与部分一致的操作。这样,就会使操作XML整体与操作XML对象的一部分一致。