2011-04-13 104 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