本文来自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的时候不能省掉索引值)
在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的时候不能省掉索引值)