发新话题
打印

[分享] [发现 Flash CS3 ActionScript 编辑器里的一个关于操作 XML 的 Bug!(及解决方法)]

[发现 Flash CS3 ActionScript 编辑器里的一个关于操作 XML 的 Bug!(及解决方法)]

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 .

[ 本帖最后由 iaipvfhp 于 2007-6-5 11:58 编辑 ]
AS3,flex等等...技术博客: www.RiaHome.cn
rss阅读地址: http://feed.feedsky.com/youngboy

TOP

-  -....这样。。很仔细。。。
中学生原创联盟:www.c22.com.cn
欢迎对计算机任何方面技术有兴趣的中学生加入!!

TOP

解决方法:
遗憾啊.....居然有这个 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);
这样就可以解决了....

[ 本帖最后由 iaipvfhp 于 2007-6-5 13:22 编辑 ]
AS3,flex等等...技术博客: www.RiaHome.cn
rss阅读地址: http://feed.feedsky.com/youngboy

TOP

发新话题