Я пытаюсь использовать ключевое слово delete для удаления узлов из xml-файла, и он просто не работает.xml узлы не удаляются, несмотря на вызов «delete»
Вот урезанный пример того, с чем я работаю. У каждого узла есть дочерний элемент с именем «removeeme». Если его значение равно 1, я хочу удалить его из xml-файла. Если его что-то еще я хочу оставить. Метод удаления является дефолтным вызовом 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 длину до и после удаления цикл длина действительно отличается. По какой-то причине xmllist, передаваемый в xmllistcollection, является тем, у которого узел не удален. Не имеет смысла для меня.
Edit 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])
}
}
Я знаю, это звучит глупо, но вы уверены, что сохраните новый файл в конце? – Manatherin
Я обновил свой вопрос, чтобы показать проблему более подробно. Я почти уверен, что xmllist, который я пытаюсь использовать, это тот, который я удаляю с – dubbeat