2012-12-27 79 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块为它包无效的数据会抛出错误。