
- 本栏最新文章
- xml中运用后代存取运算符(..)的问题 06-25
- swf图片加载失败问题 06-25
- PHP+MYSQL+Flash做留言本 06-25
- flash如何适应任何分辨率方法大集合 06-24
- 用FLASH里的按钮控制网页中层的显示隐藏 06-24
- 一个侦听 多个按钮 06-24
- FLASH加载XML:可分页相册的制作 06-23
- Flash教程:如何简单使用钢笔铅笔 06-19
- flash as3利用ContextMenu实现右键响应 06-13
- Flash AS3教程:Dot类 06-04

- 本栏推荐文章
- Photoshop教程:水灵灵的美女调出来 12-30
- AS3与后台交互 12-21
- AS3通俗教程---AS3自身loading制作 12-19
xml中运用后代存取运算符(..)的问题
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了.


