首页--> 计算机--> FLASH教程
 
发现CS3编辑器里一个关于操作XML的Bug(及解决方法)
http://www.xxqqss.com 学习轻松网 发布日期:2007/6/10 点击量:6663
 
var userInfo:XML =
<xmlRoot>
    <userItem id="1">
        <user>userName1</user>
        <age>1</age>
    </userItem>
    <userItem id="2">
        <user>userName2</user>
        <age>2</age>
    </userItem>
    <userItem id="3">
        <user>userName3</user>
        <age>3</age>
    </userItem>
</xmlRoot>;
AS3.0里面,在对xml 操作时,有插入新节点这个方法:insertChildBefore() ;
使用方法为:
userInfo.insertChildBefore(userInfo.userItem.(@id=="2"),userItem_new); //在<userItem id="2">节点前新加一个 <userItem_new> 节点.

但:
   <userItem id="2">
        <user>userName2</user>

       可是如果我想在此处加那个新节点<userItem_new>
        <age>2</age>
    </userItem>


就应该这样写(按道理这样写是没错的):

userInfo.userItem.(@id=="2").insertChildBefore(userInfo.userItem.(@id=="2").age,userItem_new);

的确,这样写是没错的。测试是成功的!但:一旦我按了那个 “自动套用格式” 的按钮,上面那行代码会变成:
userInfo.userItem.@id == "2".insertChildBefore(userInfo.userItem.(@id=="2").age,userItem_new1);
正确的应为:

userInfo.userItem.(@id=="2").insertChildBefore(userInfo.userItem.(@id=="2").age,userItem_new);
使得测试时显示错误了。这就是在Flash CS3 出现的bug .

解决方法:

遗憾啊.....居然有这个 bug ....不过有解决方法的:

userInfo.userItem.(@id=="2").insertChildBefore(userInfo.userItem.(@id=="2").age,userItem_new);
把以上这句分解为:

var xmlNode:*=userInfo.userItem.(@id=="2");// 注意 xmlNode 的类型是: * , 即任意类型.因为本人试过其它所以类型了, 编译是错误的.只能用这个类型.
xmlNode.insertChildBefore(userInfo.userItem.(@id=="2").age,userItem_new);
这样就可以解决了....

来源:闪吧  作者:aipvfhp

打印】 【关闭
免责声明 :本站刊载此文不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。对本文有任何异议,请发送fiyeadwyv@163.com
【免费游戏赚钱网址导航】(站长QQ:9792414)多站号请误用相同密码 【站长信箱】幸运28交流群号:122287647
游戏赚钱平台
注册地址
企业/个人
企业
 有赚网与蹦蹦网是深度合作关系
企业
手机app端赚钱名称
下载安装后输入邀请码领额外红包
估计日赚收入(亲体验)
下载方式
闪电盒子
邀请码:413270540831
3元
 安卓手机各应用市场(推荐应用宝),苹果手机输入名称查找。
中青看点
邀请码:25741975
2元
趣头条
邀请码:A443657406
1元
 
健康游戏忠告:抵制不良游戏,拒绝盗版游戏;注意自我保护,谨防受骗上当;适度游戏益脑,沉迷游戏伤身;合理安排时间,享受健康生活。
本站声明不参与任何游戏网站经营事宜,如果你和第三方游戏网站产生纠纷事宜请自行协商解决,本站感谢你的支持和理解。
站长QQ:9792414