我有这种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>
如果我尝试删除名为 johanna 的变量,我会这样做:
delete numb.variable.(name=="johanna);
然后,我收到了这个错误:
"Error #1119: Delete operator is not supported with operand of type XMLList"
建议使用numb.variable。(name ==“johanna”)是一个XMLList ..但后来我尝试了这个:
delete XML(numb.variable.(numb=="johanna");
但是没有删除任何内容..
任何人都知道如何删除麻木XML中的某个变量?
答案 0 :(得分:2)
您可以使用setChildren()方法检索 johanna 中具有不同名称的子节点,并将其设置为子节点。
e.g。
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()];
答案 1 :(得分:2)
numb.variable.(name=="johanna")
返回一个xml元素的xmllist,所以要删除它,你必须使用这个语法
delete numb.variable.(name=="johanna)[0] as XML;