[原创]flash as2读取分析xml文档

作者:小超(ccxxcc)
地址:http://www.eb163.com/club/viewthread.php?tid=317
首先建立一个xml文档,使用utf-8编码(防止出现flash读取是中文乱码),取名为getdata.xml。

xml文件:getdata.xml
<?xml version="1.0" encoding="utf-8" ?>
<sites>
 <site>
  <name><![CDATA[WEB编程站]]></name>
  <domain><![CDATA[www.eb163.com]]></domain>
  <pr>3</pr>
 </site>
 <site>
  <name><![CDATA[蓝色理想]]></name>
  <domain><![CDATA[www.blueidea.com]]></domain>
  <pr>6</pr>
 </site>
 <site>
  <name><![CDATA[闪吧]]></name>
  <domain><![CDATA[www.flash8.net]]></domain>
  <pr>6</pr>
 </site>
 <site>
  <name><![CDATA[程序员]]></name>
  <domain><![CDATA[www.csdn.net]]></domain>
  <pr>6</pr>
 </site>
</sites>

使用flash as2 实现最简单的读取:
[code]this.createTextField("my_txt", 10, 10, 10, 320, 100);      //建立flash的文本对象 并设置文本对象的相关属性
my_txt.autoSize = "left";
my_txt.border = true;
my_txt.multiline = true;
my_txt.wordWrap = true;

var sites_xml:XML = new XML();                        //建立xml对象
sites_xml.ignoreWhite = true;
sites_xml.onLoad = function (success:Boolean):Void {  //当数据加载成功时执行下面的函数代码
    if (success) {
        var childItems:Array = sites_xml.firstChild.childNodes; //取得根对象的所有子节点
        for (var i:Number = 0; i < childItems.length; i++) {
            my_txt.text += childItems[i].firstChild.firstChild.nodeValue + "/n";   //拼接子节点的子节点的第一个值
        }
    } else {
        my_txt.text = "Unable to load external file.";
    }
}
sites_xml.load("getdata.xml");     //加载xml数据

输出:
WEB编程站
蓝色理想
闪吧
程序员

读出并显示了getdata.xml每个节点的第一个子节点的值。

那么,怎样才能读取全部的子节点呢,xmlNode的属性只有firstChild和lastChild,其他的节点的值应该怎样输出呢?

this.createTextField("my_txt", 10, 10, 10, 320, 100);    //建立flash的文本对象 并设置文本对象的相关属性
my_txt.autoSize = "left";
my_txt.border = true;
my_txt.multiline = true;
my_txt.wordWrap = true;

var reviews_xml:XML = new XML();     //建立xml对象
reviews_xml.ignoreWhite = true;
reviews_xml.onLoad = function (success:Boolean):Void {    //当数据加载成功时执行下面的函数代码
    if (success) {
        var childItems:Array = reviews_xml.firstChild.childNodes;
        for (var i:Number = 0; i < childItems.length; i++) {    //利用双循环遍历子节点的值
   var nextChildItems:Array = childItems.firstChild.childNodes;
    var nextChildItems:Array = childItems[i].childNodes;
       for (var j:Number = 0;j < nextChildItems.length; j++) {
       my_txt.text += nextChildItems[j].nodeName + ":" + nextChildItems[j].firstChild.nodeValue + "/n";
       }
    my_txt.text += "/n";
        }
    } else {
        my_txt.text = "Unable to load external file.";
    }
}
reviews_xml.load("getdata.xml");    //加载xml数据

输出:
name:WEB编程站
domain:www.eb163.com
pr:3

name:蓝色理想
domain:www.blueidea.com
pr:6

name:闪吧
domain:www.flash8.net
pr:6

name:程序员
domain:www.csdn.net
pr:6

其实就是利用了双循环遍历子节点的值,然后拼接为字符串显示在文本对象上。
如果还有下一层的子节点,就需要三层遍历。其实用递归也可以做。

刚刚开始学习flash,总结分享一下学习的成果,欢迎各路大侠指点。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值