使用关联数组更新数组节点

时间:2014-05-01 06:09:13

标签: arrays xml actionscript-3 flex flex4.5

我有一个像:

这样的数组
> ObjectArr[ID,x,y,distance,Type];

和一个xml如:

 objectXML = 
    <objects>
      <object id={ID} x={x} y={y} distance={distance}>{Type}</object>
      <object id={ID} x={x} y={y} distance={distance}>{Type}</object>
      <object id={ID} x={x} y={y} distance={distance}>{Type}</object>
      <object id={ID} x={x} y={y} distance={distance}>{Type}</object>
    </objects>

目标:根据objectArr

更新XML节点
objectArr.length = 4 and objectXMl.length() = 4

我这样做了:

for(var i:int = 0; i < objectXML.length(); i++)
{
  objectXML.object[i].@ID = objectArr[i].ID;
  objectXML.object[i].@x = objectArr[i].x;
  objectXML.object[i].@y = objectArr[i].y;
  objectXML.object[i].@distance = objectArr[i].distance;
  objectXML.object[i]= objectArr[i].Type;
}

但是xml没有根据数组元素进行更新。 我应该选择其他任何解决方案吗?

如果我需要在删除后更新xml我该怎么办? 删除数组我写了这么多

var ID:String = Obj.getObjectId();
for(var i:int=0; i < objectArr.length; i++)
{
  if(objectArr[i].objID == ID)
  objectArr.splice(i, 1);
}

并删除xml节点我写了这段代码::

for(var i:int = 0; i<objectXML.object.length();i++)
{
  if(objectXML.object.length() && objectXML.object[i].@objID == objectArr[i].objID)
     delete objectXML.object[i];
}

但它显示此错误

  

错误#1010:术语未定义且没有属性。

1 个答案:

答案 0 :(得分:1)

  • objectXML.length()等于1,而不是4
  • @ID应小写以匹配xml
  • 中的id属性

试试这个:

for(var i:int = 0; i < objectXML.object.length(); i++){
   objectXML.object[i].@id=objectArr[i].ID;
   //....
}