xml节点将不会删除,尽管调用了;删除“;
我试图使用delete关键字从xml文件中删除节点,但它显然不起作用 这里有一个简单的例子来说明我的工作。每个节点都有一个名为“deleteme”的子节点。如果它的值等于1,我想从xml文件中删除它。如果还有别的事,我就不干了。delete方法是deffinally gettig调用,但它没有任何效果xml节点将不会删除,尽管调用了;删除“;,xml,apache-flex,flex3,e4x,Xml,Apache Flex,Flex3,E4x,我试图使用delete关键字从xml文件中删除节点,但它显然不起作用 这里有一个简单的例子来说明我的工作。每个节点都有一个名为“deleteme”的子节点。如果它的值等于1,我想从xml文件中删除它。如果还有别的事,我就不干了。delete方法是deffinally gettig调用,但它没有任何效果 <?xml version="1.0" encoding="utf-8"?> <stuff> <i> <
<?xml version="1.0" encoding="utf-8"?>
<stuff>
<i>
<deleteme>
0
</deleteme>
</i>
<i>
<deleteme>
1
</deleteme>
</i>
<i>
<deleteme>
0
</deleteme>
</i>
</stuff>
0
1.
0
动作脚本
var xmlList:XMLList=_sourceXML.i;
for (var j:int=0; j < _xmlList.length(); j++)
{
if (xmlList[j].deleteme== 1)
{
delete xmlList[j];
}
}
//breakpoint here. xmlList still contains nodes that should have been deleted
xmlListColl=new XMLListCollection(xmlList);
xmlListColl.refresh()
var-xmlList:xmlList=\u sourceXML.i;
对于(var j:int=0;j<_xmlist.length();j++)
{
if(xmlList[j].deleteme==1)
{
删除xmlList[j];
}
}
//断点在这里。xmlList仍然包含本应删除的节点
xmlListColl=新的XMLListCollection(xmlList);
xmlListColl.refresh()
编辑
var xmlList:XMLList=_sourceXML.i;
for (var j:int=0; j < _xmlList.length(); j++)
{
if (xmlList[j].deleteme== 1)
{
delete xmlList[j];
}
}
//breakpoint here. xmlList still contains nodes that should have been deleted
xmlListColl=new XMLListCollection(xmlList);
xmlListColl.refresh()
如果我在delete for循环之前和之后跟踪xmllist长度,那么长度确实不同。似乎出于某种原因,传递给xmllistcollection的xmllist是未删除节点的。对我来说毫无意义
编辑2
下面给出了期望的结果。然而,我仍然想知道为什么前一种方法不起作用
for (var j:int=0; j < xmlList.length(); j++)
{
//trace(xmlList[j].deleteme)
if (xmlList[j].deleteme!=1 )
{
//delete xmlList[j];
xmlListColl.addItem(xmlList[j])
}
}
for(var j:int=0;j
Yo
您需要反向执行“for循环”。这用于通过迭代循环删除任何集合/列表中的项
删除一个项目时(例如,当j为2时为索引2),列表中的下一个项目将填充已删除项目留下的空间(例如,索引3 becmoes index 2),但j将增加到3,并且移动的项目(在索引2中)将被跳过。以下工作将起作用:
var _xmlList:XMLList=_sourceXML.i;
for (var j:int=_xmlList.length() - 1; j >= 0 ; j--)
{
if (_xmlList[j].deleteme == 1)
{
delete _xmlList[j];
}
}
哟
您需要反向执行“for循环”。这用于通过迭代循环删除任何集合/列表中的项
删除一个项目时(例如,当j为2时为索引2),列表中的下一个项目将填充已删除项目留下的空间(例如,索引3 becmoes index 2),但j将增加到3,并且移动的项目(在索引2中)将被跳过。以下工作将起作用:
var _xmlList:XMLList=_sourceXML.i;
for (var j:int=_xmlList.length() - 1; j >= 0 ; j--)
{
if (_xmlList[j].deleteme == 1)
{
delete _xmlList[j];
}
}
我知道这听起来很愚蠢,但你确定你最后保存了新文件吗?我更新了我的问题,以更详细地说明问题。我很确定我尝试使用的xmllist就是我要从中删除的那个。我知道这听起来很愚蠢,但你确定最后保存了新文件吗?我更新了我的问题,以更详细地说明问题。我非常确定我尝试使用的xmllist就是我正在从中删除的那个,这非常有意义。谢谢你给我解释。这让我发疯,肯定有很多程序等着在这类事情上失败:)这很有道理。谢谢你给我解释。这让我发疯,肯定有很多程序等着在这类事情上失败:)