2011-05-24 4 views
2

У меня есть этот XML структуру:Удаление конкретного узла с помощью e4x синтаксиса

<numb> 
    <variable> 
    <name>john</name> 
    <age>12</age> 
</variable> 
<variable> 
    <name>janet</name> 
    <age>10</age> 
</variable> 
<variable> 
    <name>johanna</name> 
    <age>22</age> 
</variable> 
<variable> 
    <name>harry</name> 
    <age>24</age> 
</variable> 
</numb> 

Если я пытаюсь удалить переменную с именем Johanna я это сделать:

delete numb.variable.(name=="johanna); 

, но затем, Я получаю эту ошибку:.

"Error #1119: Delete operator is not supported with operand of type XMLList" 

предлагая numb.variable (имя == "Джоанна") является XM LLIST ..но я попытался это:

delete XML(numb.variable.(numb=="johanna"); 

но ничего не удалять ..

Любые знает, как я могу удалить некоторые переменные в оцепенелом XML?

ответ

2

Вы можете получить дочерние узлы, которые имеют различное имени из Johanna и установить те, как дочерние узлы, используя метод setChildren().

например.

var xml:XML = <numb> 
    <variable> 
    <name>john</name> 
    <age>12</age> 
</variable> 
<variable> 
    <name>janet</name> 
    <age>10</age> 
</variable> 
<variable> 
    <name>johanna</name> 
    <age>22</age> 
</variable> 
<variable> 
    <name>harry</name> 
    <age>24</age> 
</variable> 
</numb> 

xml.setChildren(xml.variable.(name != 'johanna')); 
trace(xml); 
/* 
Outputs: 
<numb> 
    <variable> 
    <name>john</name> 
    <age>12</age> 
    </variable> 
    <variable> 
    <name>janet</name> 
    <age>10</age> 
    </variable> 
    <variable> 
    <name>harry</name> 
    <age>24</age> 
    </variable> 
</numb> 
*/ 

Другой вариант заключается в петле через каждый узел, который удовлетворяет условию и удалить соответствующий узел через нотации доступа массива с помощью childIndex() метод:

короткая версия:

for each (var match:XML in xml.variable.(name == 'johanna')) delete xml.variable[match.childIndex()]; 

длинная версия:

var xml:XML = <numb> 
    <variable> 
    <name>john</name> 
    <age>12</age> 
</variable> 
<variable> 
    <name>janet</name> 
    <age>10</age> 
</variable> 
<variable> 
    <name>johanna</name> 
    <age>22</age> 
</variable> 
<variable> 
    <name>harry</name> 
    <age>24</age> 
</variable> 
</numb>; 

var matches:XMLList = xml.variable.(name == 'johanna'); 
for each (var match:XML in matches) delete xml.variable[match.childIndex()]; 
+0

спасибо. @ Джордж Profenza – helpdesk

1
numb.variable.(name=="johanna") 

возвращение XMLList, одного XML-элемента, так, чтобы удалить его, вы должны использовать этот синтаксис

delete numb.variable.(name=="johanna)[0] as XML; 
Смежные вопросы