Я пытаюсь использовать ключевое слово delete для удаления узлов из XML-файла, и оно просто не будет работать.
Вот урезанный пример того, с чем я работаю. У каждого узла есть дочерний элемент с именем "deleteme". Если его значение равно 1, я хочу удалить его из файла XML. Если это что-то еще, я хочу оставить это. Метод delete определенно вызывается 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>
ActionScript
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()
Редактировать
Если я прослежу длину xmllist до и после цикла удаления for, длина действительно будет другой. Кажется, по какой-то причине xmllist, передаваемый в коллекцию 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])
}
}