AS3操作XML [七]: 按某条件插入节点_发现AS编辑器的bug并解决

      Flash 2007-6-14 8:43

// 例七: 按某条件插入节点_发现AS编辑器的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>;

//新建新的userItem节点
var userItem_new1:XML=
<userItem id="1.5">
<user>userName1.5</user>
<age>1.5</age>
</userItem>;
var userItem_new2:XML=
<userItem id="2.5">
<user>userName2.5</user>
<age>2.5</age>
</userItem>;

//在哪个节点 前/后 加,就用哪个节点名;这里为userInfo
//在<userItem id="2"> 前 加userItem_new1节点
userInfo.insertChildBefore(userInfo.userItem.(@id=="2"),userItem_new1);

//在<userItem id="2"> 后 加userItem_new2节点
userInfo.insertChildAfter(userInfo.userItem.(@id=="2"),userItem_new2);
trace(userInfo);

//--------------------------------------------------
/*注意:
<userItem id="2">
<user>userName2</user>
可是如果我想在此处加那个新节点<userItem_new1>
<age>2</age>
</userItem>
就必须这样写:
*/
//注意 xmlNode 的类型是: * , 即任意类型.因为本人试过其它所以类型了, 编译是错误的.只能用这个类型.
var xmlNode:*=userInfo.userItem.(@id=="2");
xmlNode.insertChildBefore(userInfo.userItem.(@id=="2").age,userItem_new1);
//不能简写成: userInfo.userItem.(@id=="2").insertChildBefore(userInfo.userItem.(@id=="2").age,userItem_new);

trace(userInfo);

 压缩包下载


标签集:TAGS:AS3
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}