2011-03-31 140 views
0

AM读取数据就会像从端口从端口中bytes.my数据的形式将数据传递到XML()

<book name="xxx"> 
    <title>First</title> 
</book> 

,我想该数据来在

var xml:XML=new XML(); 

传递给在我的桌面应用程序运行时显示在网格中。当我通过数据时

var socket:Socket = event.target as Socket; 
var bytes:ByteArray = new ByteArray(); 
socket.readBytes(bytes); 
var xml:XML=new XML(bytes); 

它不工作。但是当我通过

var xml:XML=new XML("<book name="xxx"><title>First</title></book>"); 

工作正常。

请指导我解决。

回答

1

如果你只打算使用XML数据套接字,我建议你看看XMLSocket

一个XML对象不希望在其构造函数中接收字节,而您正在接受它。这就是它不工作的原因。

1

XML类使用全局XML()转换函数来读取数据的内容。这不会理解byteArray,因此您需要将您的byteArray转换为更具可读性的内容。您可以尝试(未经测试):

var xml:XML=new XML(bytes.readUTFBytes(bytes.length)); 
1

您可以使用URLRequest加载您的XML文件。通过这个请求,你可以加载你的数据和一个eventlistener,你可以使用加载的数据将它解析成XML。

下面是一个例子。

protected function getXMLfile():void 
      { 
       // TODO Auto-generated method stub 
       try{ 
        var req:URLRequest = new URLRequest("yourURL"); 
        var loader:URLLoader = new URLLoader(req); 
        loader.addEventListener(Event.COMPLETE, loaderCompleteHandler); 
        loader.load(req);  
       } 
       catch(err:Error){ 
        Alert.show(err.message); 
       } 
      } 

private function loaderCompleteHandler(evt:Event):void {     
       try { 
        var niveau:uint = 0;      
        var xmlFile:XML = new XML(evt.target.data);      

       } catch (err:Error) { 
        Alert.show("Could not parse the XML file."); 
       } 
      } 

这应该很好。欲了解更多信息,请联系我。 希望这会帮助你。