我有这个 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");
但这并没有删除任何东西..
有人知道如何删除 NumPy 的 XML 中的某个变量吗?
最佳答案
您可以使用 setChildren() 检索与 johanna 具有不同name 的子节点并将它们设置为子节点方法。
例如
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()];
关于xml - 使用 e4x 语法删除特定节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6106535/