简述在FLASH读取XML的数据.doc_第1页
简述在FLASH读取XML的数据.doc_第2页
简述在FLASH读取XML的数据.doc_第3页
简述在FLASH读取XML的数据.doc_第4页
简述在FLASH读取XML的数据.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

简述在FLASH读取XML的数据(转)在FLASH中,使用XML接口获取外部数据是最有效的方法之一.(通常还有WebSerivce接口和LoadVars方法)下面来看一个简单的XML文档(city.xml)这个文档描述的是城市地区的信息简单介绍一下XML文档格式的书写规范: 第一行:这是一个XML文档的描述信息.其中定义了该XML文档的一些基本属性,包括:版本信息(version),使用的字符编码(encoding).第二行:(虽然在FLASH中我们用不到节点的任何属性,但是合式的XML文档必须要求一个根节点)在XML文档中,这是一个根节点.XML规定所有标签必须有闭合.所以,在最后一行使用对应的标签来闭合.同样,单行的XML节点也需要闭合,例如:其中/符号就表示单行的节点闭合.name,code,pnum是节点的属性,写法就是:属性名=属性值 这样的名/值对.至于节点名和属性名都是可以自定义的,也就是说可以任意命名.但是还是建议要尽量规范节点是的子节点,相应的叫做的父节点在这个XML文档中有3个子节点,我们数据就存储在这3个子节点的属性中,分别有:城市名称(name),城市代码(code),城市人口数目(pnum)我们要做的最终目的就是在FLASH中获取这些节点的属性值下面来看一个FLASH调用XML的实例System.useCodepage = true;var doc:XML = new XML();doc.load(city.xml);doc.ignoreWhite = true;doc.onLoad = function(success)if(success) trace(doc.childNodes0.childN); trace(doc.childNodes0.childN); trace(doc.childNodes0.childN);分析:System.useCodepage = true;如果在XML文档中使用了中文编码,例如gb2312.那么在FLASH中必须启用使用页面编码的指令.var doc:XML = new XML();建立一个XML实例.赋予doc这个对象.doc.load(city.xml);load()-XML对象的一个方法:加载XML数据到doc这个对象当中.提供XML数据的方式并不是限制于.xml的文件,任何符合XML书写格式的文档都可以,通常,我们是使用程序来提供XML数据的,例如/city.aspx?country=chinadoc.ignoreWhite = true;ignoreWhite-XML对象的一个属性:指定XML文档忽略空白,因为在XML中一个换行在FLASH中会被视为一个节点doc.onLoad = function(success)onLoad-XML对象的一个方法.将会返回一个布尔值true或false.用来判断XML是否被成功加载.如果加载成功则会返回true,反之则返回false此处为该方法使用了一个函数,其参数success用来贮存上述的布尔值if(success)一个判断语句:如果加载成功(即success的值为true),则触发括号内的动作trace(doc.childNodes0.childN);输出doc(此时city.xml中的数据已经包含到doc这个XML对象当中)这个XML对象的第一个节点下的第一个子节点的name属性值childNodes-XML对象的一个属性,它的值的类型是数组型.XML的一个节点可以在FLASH中通过这个属性来表示其包含的数据.由于FLASH中数组的长度计算是由0开始,所以我们XML文档中的第一个节点就存储在数组的0位置.而不是1所以,我们取出XML文档的第一个节点-,就应该表示成这样childNodes0同样,我们取出XML对象根节点()下的第一个子节点(),就表示成doc.childNodes0.childNodes0相应的,取出第二个子节点:doc.childNodes0.childNodes1第三个子节点:doc.childNodes0.childNodes2(这一步中,需要涉及到FLASH中数组对象的使用原理)在FLASH与XML的数据交互中,可能数据的表现是最难的一步.针对上面数据表现方式,我们可以充分利用数组的便利性来做假如已经获得一个XML对象doc首先,我们将这个XML中使用到的数据转换为一个数组对象来表示var myList:Array = doc.childNodes0.childNodes;/直接将XML文档根节点下的的所有子节点放到一个数组中trace(myL+,+myList0.attributes.code+,+myList0.attributes.pnum);/输出第一个city节点所有的属性值trace(myL+,+myList1.attributes.code+,+myList1.attributes.pnum);/输出第二个city节点所有的属性值trace(myL+,+myList2.attributes.code+,+myList2.attributes.pnum);/输出第三个city节点所有的属性值输出结果:上海,021,500000北京,010,600000浙江,057,1000000/*以上完整的代码为*/System.useCodepage = true;var doc:XML = new XML();doc.load(city.xml);doc.ignoreWhite = true;doc.onLoad = function(success)if(success) var myList:Array = doc.childNodes0.childNodes; trace(myL+,+myList0.attributes.code+,+myList0.attributes.pnum); trace(myL+,+myList1.attributes.code+,+myList1.attributes.pnum); trace(myL+,+myList2.attributes.code+,+myList2.attributes.pnum);/*代码结束*/为了在FLASH中其他的位置都能够访问到我们所需要的XML数据,我们可以将myList数组对象放置到上下文的任意位置例如:System.useCodepage = true;var doc:XML = new XML();var myList:Array = new Array();/预先建立一个数组对象用来放置XML节点数据,以便FLASH其他位置的代码都能够访问doc.load(city.xml);doc.ignoreWhite = true;doc.onLoad = function(success)if(success) myList = doc.childNodes0.childNodes;/当XML加载成功后对上文的myList数组对象进行赋值./使用一个按钮动作来获取数组对象中的一个CITY节点信息btName.onPress = function()trace(_root.myL+,+_root.myList0.attributes.code+,+_root.myList0.attributes.pnum);这样的写法当然还不满足我们一些复杂的需求,而且代码过冗长.使用函数来返回我们需要的信息,应该是最正确的做法,我们来实现它按下按钮时,向函数递交一个城市代码,返回城市名和人口信息System.useCodepage = true;var doc:XML = new XML();var myList:Array = new Array();/预先建立一个数组对象用来放置XML节点数据,以便FLASH其他位置的代码都能够访问doc.load(city.xml);doc.ignoreWhite = true;doc.onLoad = function(success)if(success) myList = doc.childNodes0.childNodes;/当XML加载成功后对上文的myList数组对象进行赋值./函数开始function getCityInfo(code) /构建一个函数的写法是:function 函数名(参数)/脚本代码var cityName:String;/建立一个字符窜变量来存储城市名var pepCount:String;/建立一个字符窜变量来存储居民数量for(var i=0;i if(code eq myListi.attributes.code) cityName

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论