Removing a specific node using e4x syntax

I have this XML structure:

<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>

If I try to delete a variable named johanna, I will do the following:

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

but then I get this error:

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

offering numb.variable. (name == "johanna") is an XMLList .. but then I tried this:

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

but didn’t delete anything ..

Does anyone know how I can remove a specific variable in numb XML?

+3
source share
2 answers

You can get child nodes with a different name from johanna and set them as child nodes using setChildren () .

eg.

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>
*/

node, node 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()];
+2
numb.variable.(name=="johanna") 

xmllist xml,

delete numb.variable.(name=="johanna)[0] as XML;
+2

All Articles