2011-05-24 83 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。(name ==「johanna」)是一個XM LLIST ..但後來我嘗試這樣做:

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 2011-05-26 07:44:45

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

返回一個XML元素的XMLList,所以要刪除它,你必須使用此語法

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