• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>FLASH AS 编程>AS进阶篇>文章内容
  • xml中运用后代存取运算符(..)问题
  • 来源:CaT's BloG 作者:猫大哥 2008-06-24 【

test.xml:

<?xml version="1.0" encoding="utf-8"?> 
<root> 
 <p>0123456789</p> 
 <p>987654321<img src="logo.jpg"/></p> 
</root>

as脚本:

private function test():void{
       var uld:URLLoader=new URLLoader(new URLRequest(’text.xml’));
       uld.addEventListener(Event.COMPLETE,ok);
       function ok(event:Event):void{
         //没有输出?如果在text.xml任意位置再加个<img src="logo.jpg"/>.却能找到!
         trace(XML(event.target.data)..img); 
       }
}

问题:

上述代码中为什么没有输出呢?

原因:


经过抓耳挠腮终于想明白了.不是XML的问题.也不是后代存取运算符的问题.而是障眼了:
我这个需要遍历的节点正好有点特殊.是一个不包含子节点的节点.
当只遍历到一个的时候.返回的XMLList正好是一个不含任何子节点的XML.
那么trace的时候,其本身就是在trace一个XML,且没有任何子节点,toString当然是一个空了,如同:
var xml:XML=<img src="#"></img>;//<img src="#"/>
trace(xml);//trace(xml.toString())
其实节点是存在的.如果有属性.那么trace(img.@src)也是有值的.如果它还包含子节点.那也是可以trace出来的.或是采用toXMLString();
当遍历到多个的时候,返回的就是一个包括多个XML的XMLList;
这个时候trace就真正是在输出一个XMLList了.



上一篇:ActionScript处理异步事件(三)   下一篇:利用数组帮助实现循环滚动(as2.0)
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)