2009-12-06 49 views
2

我是從使用者的攝影數據,並將其寫入到一個XML字符串,像這樣:如何使用ActionScript 3安全地編碼XML?

VAR myXml:XML = {} userEnteredText

這是罰款和花花公子,直到用戶獲得與可愛特殊字符如「& <>」等。非法字符也是像0x19這樣的問題。

是否有方法,將sanatize我的XML和編碼特殊字符或將我必須推出自己的?

回答

3

簡單的字符串轉換爲textnode應該做的伎倆

var s:String = "test<ie>test"; 
var x:XML = <xml/>; 
x.appendChild(s); 
trace(x.toXMLString());//outputs "<xml>test&lt;ie&gt;test</xml>" 

也,你可以一下子就將這些內容爲CTADA ...

我不知道,爲什麼0x19應該是非法的...空格和nullbytes都經常掉線...但如果它是你想要的二進制數據,你應該使用base64 ... >here's a lib<

1

top level functionescape是一種方法。

+0

除了這種逃避的空間爲%20,其中,除非您在客戶端進行類似的轉換,否則不會自動轉義。 – 2010-05-17 03:26:41

0

這是真的back2dos的建議,評論:

var s:String = "test<ie>test"; 
var x:XML = <xml/>; 
x.appendChild(s); 
trace(x.toXMLString());//outputs "<xml>test&lt;ie&gt;test</xml>" 

在我的機器,嘗試這種產生的異常:

An ActionScript error has occurred: 
TypeError: Error #1085: The element type "ie" must be terminated by the matching end-tag "</ie>". 

所以我還在尋找答案完全相同的問題。

對不起,我還沒有100分,所以我不能直接評論那篇文章呢。