AS3 Удалить дочерний узел из XML по дочернему значению - PullRequest
5 голосов
/ 13 марта 2012

У меня есть XML со структурой, подобной следующей;

 <items>
    <item>5</item>
    <item>3006</item>
    <item>25</item>
    <item>458</item>
    <item>15</item>
    <item>78</item>
 </items>

Как удалить элемент со значением 458. Просто чтобы прояснить это, я не знаю индекса этого элемента, поэтому простой вызов delete items [index] здесь не подходит. Я должен удалить по значению.

Есть подсказки?

Ответы [ 2 ]

7 голосов
/ 13 марта 2012

это должно решить это.Кстати, это удалит всех прямых детей с именем «item», которые имеют значение 458.

delete xml.(item == "458");

Для рекурсивного удаления всех детей и дочерних элементов, которые имеют имя «item» и значение 458, используйте:

delete xml..(item == "458");
4 голосов
/ 13 марта 2012

Используя фильтрацию e4x и возможности использования функции внутри фильтра, вы можете удалить нужный вам узел:

  • xml.item. (Text () == value) даст вам узел, который вы ищете
  • valueOf () даст вам текущий фильтруемый узел
  • delete удалит узел

так что комбинируя эту информацию вы можете сделать:

var xml:XML=<items>
    <item>5</item>
    <item>3006</item>
    <item>25</item>
    <item>458</item>
    <item>15</item>
    <item>78</item>
 </items>;

 function deleteValue(xml:XML, value:String):void{
   xml.item.((text()==value) && (delete parent().children()[valueOf().childIndex()]));
 }

 deleteValue(xml, "458");

 trace(xml.toXMLString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...