zoukankan      html  css  js  c++  java
  • 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》这本翻译笔记,里面介绍得非常清楚。

  • 相关阅读:
    现代软件工程 第一章 概论 第4题——邓琨
    现代软件工程 第一章 概论 第9题——邓琨
    现代软件工程 第一章 概论 第7题——张星星
    现代软件工程 第一章 概论 第5题——韩婧
    hdu 5821 Ball 贪心(多校)
    hdu 1074 Doing Homework 状压dp
    hdu 1074 Doing Homework 状压dp
    hdu 1069 Monkey and Banana LIS变形
    最长上升子序列的初步学习
    hdu 1024 Max Sum Plus Plus(m段最大子列和)
  • 原文地址:https://www.cnblogs.com/beniao/p/1363859.html
Copyright © 2011-2022 走看看