2012-12-27 82 views
0

我的AS3代碼:XML從外部XML解析(閃光燈AS3)(web服務)

loginBtn.addEventListener("mouseDown", sendData) 
function sendData(e:Event) { 
    var path:String = "http://server1.digitalmulia.com/~testing/webservice/auth/login"; 
    var myData:URLRequest = new URLRequest(path) 
    myData.method = URLRequestMethod.POST 
    var variables:URLVariables = new URLVariables() 
    variables.username = usernameField.text 
    variables.password = passwdField.text 
    myData.data = variables 
    var loader:URLLoader = new URLLoader() 
    loader.dataFormat = URLLoaderDataFormat.VARIABLES 
    loader.addEventListener(Event.COMPLETE, dataOnLoad) 
    loader.load(myData) 
} 
function dataOnLoad(e:Event){ 
    var xmldata = XML(e.target.data); 
    var xxx = xmldata.toString(); 
    var myFormat:TextFormat = new TextFormat(); 
    myFormat.font = "Arial"; 
    myFormat.size = 12; 
    myFormat.bold = true; 

    var myText:TextField = new TextField(); 
    myText.defaultTextFormat = myFormat; 
    myText.selectable = true; 
    myText.border = true; 
    myText.text = xxx; 
    myText.x = 10; 
    myText.y = 200; 
    myText.width = 300; 
    myText.height = 100; 
    addChild(myText); 

} 
stop() 

其結果是:

%3C%3Fxml%20version =%221%2E0%22%3F% 3E%0A%3Cxml%3E%3Cdatas%2F%3E%3Cinformation%3E%3Cpasswd%3E5f4dcc3b5aa765d61d8327deb882cf99%3C%2Fpasswd%3E%3C%2Finformation%3E%3Cerror%3E%3Citem%3EUsername%20not%20found%20or%20password% 20is%20wr%%3C%2Fitem%3E%3C%2Ferror%3E%3C%2Fxml%3E%0A

怎麼了?我需要的結果類似於

<xml> 
    <datas/> 
    <information> 
     <passwd>5f4dcc3b5aa765d61d8327deb882cf99</passwd> 
    </information> 
    <error> 
     <item>Username is null</item> 
     <item>Password is null</item> 
    </error> 
</xml> 

對不起我的英語不好。

回答

1

你可以試試unescape(xmldata.toString())然後你會得到所需的輸出。

 function dataOnLoad(e:Event) 
     { 
      var xmldata:XML = XML(e.target.data); 
      var xmlStr:String = unescape(xmldata.toString()); 
      xmldata = XML(xmlStr);   
     } 

函數escape(「args」)將參數轉換爲字符串並以URL編碼格式對其進行編碼。

escape("escape unescape"); 

輸出:escape%20unescape

功能UNESCAPE轉換成ASCII字符所有十六進制序列。例如,

unescape("escape%20unescape"); 

輸出:escape unescape

+0

非常感謝你拉賈,它的工作:) –

0

我敢肯定,這是監守你選擇URLLoaderDataFormat.VARIABLES類型,嘗試像URLLoaderDataFormat.TEXT其他值也通過這個對XML構造函數時用try catch塊爲它包無效的數據會拋出錯誤。