Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xml节点将不会删除,尽管调用了;删除“;_Xml_Apache Flex_Flex3_E4x - Fatal编程技术网

xml节点将不会删除,尽管调用了;删除“;

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> <

我试图使用delete关键字从xml文件中删除节点,但它显然不起作用

这里有一个简单的例子来说明我的工作。每个节点都有一个名为“deleteme”的子节点。如果它的值等于1,我想从xml文件中删除它。如果还有别的事,我就不干了。delete方法是deffinally gettig调用,但它没有任何效果

<?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就是我正在从中删除的那个,这非常有意义。谢谢你给我解释。这让我发疯,肯定有很多程序等着在这类事情上失败:)这很有道理。谢谢你给我解释。这让我发疯,肯定有很多程序等着在这类事情上失败:)