flash as3读取xml

来源:互联网 发布:暴漫淘宝 编辑:程序博客网 时间:2024/05/22 01:28

as3读取xml

在as里面,我觉得最重要和最常用的内容莫过于读取xml数据了,这也是as最常用的和外界数据交互的内容,下面我想和大家一起来对as3读取xml内容进行一些探讨。
下面是本人知道的一些方法,拿出来做个引导,如有不对的,还希望大家能指出来

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

xml代码
  1. <infoPic>
  2. <pic>
  3. <url>images/01.jpg</url>
  4. <content>1</content>
  5. </pic>
  6. <pic>
  7. <url>images/02.jpg</url>
  8. <content>2</content>
  9. </pic>
  10. </infoPic>

 

 

as3代码

  1. var url=new URLRequest("info.xml"); //获取一个xml文件
  2. var loadurl=new URLLoader(url); //使用URLLoader导入数据
  3. loadurl.addEventListener(Event.COMPLETE,Loadxml); //添加事件******,以在XML数据导入完成后处理XML数据
  1. function Loadxml(event:Event) {
  2. var xml:XML=XML(loadurl.data); //导入完成后,使用导入的数据创建XML对象
  3. trace(xml.child(0).child(0)); //输出xml对象的第一节点下第一个节点 ,输出结果:images/01.jpg
  4. }
这是最简单最常用的方法,要想读取xml里面的那个数据,就通过节点读取他,需要注意的是节点是从0开始计数的。

 

节点名读取法

上贴说了节点索引读取,那么我们再来看看节点名直接读取
方法也差不多,就改一句话

as3代码
  1. var url=new URLRequest("info.xml"); //获取一个xml文件
  2. var loadurl=new URLLoader(url);
  3. loadurl.addEventListener(Event.COMPLETE,Loadxml);
  4. function Loadxml(event:Event) {
  5. var xml:XML=XML(loadurl.data);
  6. trace(xml.pic[0].url[0]); //输出xml对象的第一个pic节点下第一个url节点 ,输出结果:images/01.jpg
  7. }
和上面的区别就只有最后输出部分,trace(xml.pic[0].url[0]);,这里需要注意的是,必须得层层读取,如果直接trace(xml.url[0]);就会输出undefined,无法找到你要的内容

 

节点属性读取

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

xml代码:
  1. <infoPic>
  2. <pic>
  3. <url name='richie'>images/01.jpg</url>
  4. <content>1</content>
  5. </pic>
  6. <pic>
  7. <url name='dfive'>images/02.jpg</url>
  8. <content>2</content>
  9. </pic>
  10. </infoPic>

 

as3代码:
  1. var url=new URLRequest("info.xml");
  2. var loadurl=new URLLoader(url);
  3. loadurl.addEventListener(Event.COMPLETE,Loadxml);
  4. function Loadxml(event:Event) {
  5. var xml:XML=XML(loadurl.data);
  6. trace(xml.pic[0].url.@name);
  7. trace(xml.pic[1].url.@name);
  8. //输出结果:richie
  9. //输出结果:dfive
  10. }

 

一些注意事项

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

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

关于节点索引,如果你清楚知道子节点只有一个,可以省掉节点名的索引值(注意使用child的时候不能省掉索引值)
0 0
原创粉丝点击