2011-03-17 138 views
0

什麼是flex中可用的內置函數,我可以使用actionscript在xml變量中查找具有特定名稱的節點,以及哪些函數可以幫助我操作它?像SQL中的Xquery一樣!每次我想操作一個xml變量時,我都不想使用for循環。例如,如果我想在此xml中「剪切」節點,並在語法上爲其添加另一個名爲enabled的屬性。或者我怎麼能找到「查找下一個」節點並刪除它?如何在操作腳本中操作xml中的元素?

    <menuitem label="Edit"> 
        <m label="Cut"/> 
        <m label="Copy"/> 
        <m label="Paste"/> 
        <m type="separator"/> 
        <m label="Find"/> 
        <m label="Find Next"/> 
       </menuitem> 

謝謝你們。

回答

0

1)找到「腰斬」節點:

這裏有一個簡單的方法來找到「腰斬」的節點,但它會要求你刪除<m type="separator" />,因爲它會拋出一個錯誤與此碼。簡單地找到它:

var cut:XMLList = xml.m.(@label == "Cut"); 

如果無法刪除「分隔符」節點,那麼你就必須通過找到它循環。

一旦你擁有了它,然後添加一個新的屬性,它只是:

[email protected] = true; // adds the attribute "someOther" 

2)刪除 「查找下一個」 節點

刪除XML節點在AS3有點尷尬。你可以嘗試多種方式,但總是會有一個錯誤或另一個錯誤。有關更多信息,請參閱http://bottomupflash.wordpress.com/2008/03/26/deleting-xml-nodes-harder-than-it-looks/

代碼的唯一的一塊,我能想出這將刪除「查找下一個」節點是:

var i:int = 0; 
for each(var x:XML in xml.m) 
{ 
    if ([email protected] == "Find Next") 
     delete xml.m[i]; 
    i++; 
} 

基本上,我們通過結構循環,找到的索引「查找下一個「節點,然後我們使用子選擇器刪除它。

+0

謝謝divillysausages。這是一個很好的幫助。我會嘗試這些建議,看看他們是否工作正常(我相信他們應該):-) – Tintin 2011-03-17 20:10:17