2013-02-24 36 views
4

循環我有以下XML如何屬性添加到的XMLList沒有E4X

var xml:XML = <test> 
    <node id='1'/> 
    <node id='2'/> 
    <node id='3'/> 
    <node id='4'/> 
    <node id='5'/> 
</test>; 

var xmlist:XMLList = xml.children(); 

for each (var node:XML in xmlist) 
{ 
    [email protected] = "1"; 
} 

我通過循環每個節點添加屬性。我怎樣才能做到這一點沒有循環?我已經試過這

xmlist.attributes()[email protected] = "1"; 

,但我得到的錯誤「類型錯誤:錯誤#1089:分配到列表與多個項目不支持

+0

你想克服什麼問題?它是速度還是張揚? – robkuz 2013-02-24 19:26:45

+0

我正在尋找簡潔和速度,爲什麼我需要遍歷所有節點添加屬性?如果我可以在一行代碼中實現相同的功能將更加方便。 – 2013-02-25 11:06:03

+0

如果你想在1 LOC中做到這一點,爲什麼不把它包裝在一個函數調用? – robkuz 2013-02-25 11:15:53

回答

0

正如錯誤所述,它不被支持。由於您無法對多個元素進行此分配,因此我無法在不重複xml的情況下執行此操作。

爲了好玩,我想這一點,得到了同樣的錯誤:[email protected]=1

這只是一個稍微更簡潔的版本:

var xmlist:XMLList = xml.children(); 
xmlist.attributes()[email protected] = "1"; 
+0

嗨sunil我也試過相同但沒用,謝謝嘗試.... can我們通過e4x中的任何其他方式來實現這一目標? – 2013-02-25 11:08:01

1

它過2次周以來這個問題是問,但總會出現有更多的人需要幫助。

TypeError:錯誤#1089是由xml中多個對象的結果引起的。

正常情況下,我通過像這樣操作= xml.classes。(@ id == 1).students。(@ no == 2)。@ Grade =「A」; 由於xml.classes中存在多個學生而導致的錯誤,因此它試圖返回所有這些錯誤。正如錯誤所述:「不支持分配到具有多個項目的列表。」您不能同時將值分配給多個對象。

並且由於您將所有s添加到XMLList中,所以我不確定原因,因爲我不使用XMLList。我認爲這是無用的。所以,如果你改變你的代碼,

var xml:XML = <test> 
    <node id='1'/> 
    <node id='2'/> 
    <node id='3'/> 
    <node id='4'/> 
    <node id='5'/> 
</test>; 


for each (var n:XML in xml) 
{ 
    [email protected] = "1"; 
} 

的問題應該得到解決。 但我建議你使用「id」作爲唯一鍵。然後,您可以使用該唯一密鑰來訪問XML中的特定項目,如

xml.node.(@id=="1")[email protected]="1"; 

我希望這可以幫助您。保重

-Ozan