ActionScript 3.0 Step By Step系列(七):使用XML和XMLList类处理XML数据 (转)

it2024-10-30  13

ActionScript 3.0 Step By Step系列(七):使用XML和XMLList类处理XML数据

     XML--可扩展标记语言,我想看本文的你早已经将他用得滚瓜烂熟了。OK,下面就直奔主题,看看在ActionScript 3.0中是通过什么方式来处理XML数据。

     在ActionScript 3.0中,用于处理XML数据的主要有两个类:XML和XMLList。前者表示单个XML元素,它可以是包含多个子元素的XML文档,也可以是文档中的单值元素。后者表示一组XML元素。

     既然是XML,在ActionScript 3.0中同样有着和C#/Java一样的相关术语,如:文档、元素、节点以及属性等。本文将以XML文档的创建、添加数据、删除数据、查询数据以及加载外部XML文件为中心,详细介绍在ActionScript 3.0中对XML的处理。

     在此之前先来了解下E4X方法。什么是ECMAScript for XML (E4X)方法呢?它是ActionScript 3.0中所提供的一些运算符,用于访问和处理XML数据的特定功能。ActionScript 3.0 包含以下 E4X 类:XML、XMLList、QName 和 Namespace。它们位于flash.xml包下,目的就是为了达到更容易编写和理解用于处理XML数据的代码。

 一、创建内部XML文档

     在Flex下要创建一个XML文档是很简单的,可以使用XML对象直接创建,如下所示:

 1  private  var pXml:XML =   < Root >    2                           < Book id = " 1 " >  3                               < Name > ActionScript入门到精通 </ Name >  4                               < Author > 张三 </ Author >  5                               < Price > 48.50 </ Price >  6                             </ Book >  7                             < Book id = " 2 " >  8                               < Name > ASP.NET高级编程 </ Name >  9                               < Author > 李四 </ Author > 10                               < Price > 86.70 </ Price > 11                             </ Book >      12                         </ Root >

 

二、加载外部XML文档

     除了上面这种创建XML文档的方式外,我们同样可以使用一个外部已存在的xml文档(此xml文档可以是一个xml文件,也可以是一个函数的返回值等),要加载一个外部的xml文档在Flex下可以通过<mx:XML>标签来完成,如下所示:

 

1       < mx:XML id = " book "  source = " Data/Book.xml " > 2       3       </ mx:XML >

    通过上面这中方式载入的XML文档在界面设计的时候就可以直接通过book实例来绑定在界面元素上了。那么我们需要在编程中使用外部XML则需要通过另外一种方式载入XML,既使用URLLoader.load()方法,且还需要设置dataFormat属性为DataFormat.TEXT读取数据,通过complete事件处理函数来转换载入的数据为XML实例,如下代码块:

 

 1  private  function LoadXML(): void    2  {  3       // 创建URLLloader实例以简单文本形式读取数据  4       // 设置数据装载格式为DataFormat.TEXT  5       // 监听并添加complete事件处理函数  6      var loader:URLLoader  =   new  URLLoader();  7      loader.dataFormat  =  DataFormat.TEXT;  8      loader.addEventListener(Event.COMPLETE,handlerComplete);  9      loader.load( new  URLRequest( " Data/Book.xml " )); 10  } 11  12  private  function handlerComplete( event :Event): void 13  { 14      var book:XML  =   new  XML( event .target.data); 15  }      另外装载外部XML数据还有种情况就是RPC,某种情况下也叫XML-RPC,常见的开发模式通常为服务器端提供调用接口,接口可以为asp,jsp,php,aspx,webservice,wcf等提供的都可以,这里就不多说,详细在以后的文章里介绍。

三、XML的元素、节点与属性

     在ActionScript 3.0中使用E4X语法创建子元素并添加到XML中,XML对象提供了两个非常使用的方法:insertChildBefort()方法和insertChildAfter()方法,这两个方法都是以当前元素为基础来进行元素的添加。     要给XML文档节点里添加属性,需要使用“@”操作符。使用很简单,如下所示:

 1  internal  function OnClick(): void    2  {  3      var book:XML  =   < book >  4                               < item ></ item >  5                            </ book > ;  6      book.item.@id = 1 ;  7      book.item.@name = " ActionScript 3.0 " ;  8        9      Alert.show(book); 10  }

     下面是添加属性后的xml对象数据:

                     

     

四、使用XMLList读取XML数据

     XML对象提供了一个返回XMLList类型的方法elements(),既返回所有XML对象的子元素节点,随后我们可以通过for each语句循环则可访问到整个XML数据内容。以上面创建内部XML文档的XML数据为例,详细见如下代码块:

1  var list:XMLList  =  pXml.elements(); 2  for  each(var element:XML  in  list) 3  { 4       // 获取每一个节点的id 5      Alert.show(element.@id); 6      trace(element.@id); 7  }

 

     这里需要注意一点就是elements()方法只会当前节点的下一级节点,如果XML层次结构比较多还需递归来处理。另外还可以使用“.”操作符来取数据,格式为:根节点.子节点.....元素名称;

详细大家可以查阅《ActionScript 3.0 Cookbook》这本翻译笔记,里面介绍得非常清楚。

 

转自:http://www.cnblogs.com/beniao/archive/2009/01/03/1363859.html

转载于:https://www.cnblogs.com/wuhenke/archive/2009/11/01/1593970.html

相关资源:数据结构—成绩单生成器
最新回复(0)