2011-05-24 11 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> 

私はこれを行う:

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

が、その後、このエラーが発生します:

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

numb.variable(名前== "johanna")はXMですLListは、私はこれを試した後、..but:

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

それは何も削除されませんでした。..

誰もが、私は無感覚XML内の特定の変数を削除することができる方法を知っていますか?

答えて

2

あなたはヨハンナ異なるを持っている子ノードを取得し、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") 
つのXML要素のXMLListですが、それを削除する

リターンは次の構文を使用する必要が

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