flash as3读取xml 【转】

 本文来自CSDN博客:http://blog.csdn.net/webdesman/archive/2010/12/16/6080259.aspx

  在as里面,我觉得最重要和最常用的内容莫过于读取xml数据了,这也是as最常用的和外界数据交互的内容,下面我想和大家一起来对as3读取xml内容进行一些探讨。

  下面是本人知道的一些方法,拿出来做个引导,如有不对的,还希望大家能指出来

  最常用的方法,按节点读取

  xml代码

<infoPic>
<pic>
<url>images/01.jpg</url>
<content>1</content>
</pic>
<pic>
<url>images/02.jpg</url>
<content>2</content>
</pic>
</infoPic>
  as3代码

  var url=new URLRequest("info.xml"); //获取一个xml文件

  var loadurl=new URLLoader(url); //使用URLLoader导入数据

  loadurl.addEventListener(Event.COMPLETE,Loadxml); //添加事件******,以在XML数据导入完成后处理XML数据

  function Loadxml(event:Event) {

  var xml:XML=XML(loadurl.data); //导入完成后,使用导入的数据创建XML对象

  trace(xml.child(0).child(0)); //输出xml对象的第一节点下第一个节点 ,输出结果:images/01.jpg

  }

  这是最简单最常用的方法,要想读取xml里面的那个数据,就通过节点读取他,需要注意的是节点是从0开始计数的。

  节点名读取法

  上贴说了节点索引读取,那么我们再来看看节点名直接读取

  方法也差不多,就改一句话

  as3代码

  var url=new URLRequest("info.xml"); //获取一个xml文件

  var loadurl=new URLLoader(url);

  loadurl.addEventListener(Event.COMPLETE,Loadxml);

  function Loadxml(event:Event) {

  var xml:XML=XML(loadurl.data);

  trace(xml.pic[0].url[0]); //输出xml对象的第一个pic节点下第一个url节点 ,输出结果:images/01.jpg

  }

  和上面的区别就只有最后输出部分,trace(xml.pic[0].url[0]);,这里需要注意的是,必须得层层读取,如果直接trace(xml.url[0]);就会输出undefined,无法找到你要的内容

  节点属性读取

  还有一种常用方法,就是节点属性读取法

  xml代码:

<infoPic>
<pic>
<url name='richie'>images/01.jpg</url>
<content>1</content>
</pic>
<pic>
<url name='dfive'>images/02.jpg</url>
<content>2</content>
</pic>
</infoPic>
  as3代码:

  var url=new URLRequest("info.xml");

  var loadurl=new URLLoader(url);

  loadurl.addEventListener(Event.COMPLETE,Loadxml);

  function Loadxml(event:Event) {

  var xml:XML=XML(loadurl.data);

  trace(xml.pic[0].url.@name);

  trace(xml.pic[1].url.@name);

  //输出结果:richie

  //输出结果:dfive

  }

  一些注意事项

  我这个人就是喜欢啰嗦,呵呵,大家别见怪

  补充下我觉得需要注意的地方

  编码问题:对于一些xml文件使用GBK编码,as默认是使用的utf-8编码,所以可能会出现乱码现象,这时不要担心,你只要在代码里面加上System.useCodePage=true;,就不会出现乱码了

  关于节点索引,如果你清楚知道子节点只有一个,可以省掉节点名的索引值(注意使用child的时候不能省掉索引值)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值