2011-04-13 107 views
3

我有ActionScript 3.0中添加節點XML

<myXML> 
</myXML> 

使用

myXML.appendChild(<bla>text</bla>); 

我得到

<myXML> 
    <bla>text</bla> 
</myXML> 

,但如何做到這一點,如果 '文本' 實際上是包含在一個什麼東西字符串變量?那麼我如何添加一個具有一些編程生成內容的子節點?

,所以我有:

var myXML:XML = <myXML><myXML> 
var myString:String = "Hello World" 

我想要做這樣的事情

myXML.appendChild(<bla>mySring</bla>); 

如何做到這一點?

回答

7

您還可以使用{}符號:

var myXML:XML = <myXML/> 
var myString:String = "Hello World" 
//... 
myXML.appendChild(<bla>{myString}</bla>) 

更新1:

如果您想在字符串中使用CDATA,您可以將其轉換爲XML節點,然後添加它您當前的XML:

var myXML:XML = <myXML/> 
var myString:String = "<![CDATA[Hello World]]>" 
//... 
myXML.appendChild(<bla>{new XML(myString)}</bla>) 
+0

這很酷!我不知道,謝謝:) – 2011-04-13 13:20:40

+0

哦,這太好了 - 謝謝!如果我的字符串包含'<![CDATA [...]]>',怎麼做? – Mat 2011-04-13 13:37:00

+0

@Mat我已經更新了答案。如果你有其他問題,你應該接受其中一個答案,然後打開一個新答案。 – Patrick 2011-04-13 14:09:37

1

你非常接近墊,只是缺少一個節點追加到:

var myString:String = 'Hello World'; 
//this does not work 
//var xml:XML = <myXML>myString</myXML>; 
//this works 
var myXML:XML = <myXML />.appendChild(myString); 
//test 
trace(myXML,myXML.toXMLString()); 

它會很好,如果存儲在myString的價值將直接進入一個XML聲明,而不需要的appendChild。

使用您額外的節點(BLA),只需將字符串變量追加到該節點:

var myString:String = 'Hello World'; 
var myXML:XML = <myXML><bla /></myXML>; 
myXML.bla.appendChild(myString); 
//test 
trace(myXML); 
+0

mmmh - 但如何做到這一點這樣的結果將是'的Hello World'? – Mat 2011-04-13 10:57:49

+0

@Mat更新回答:) – 2011-04-13 11:01:59