2011-03-31 139 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."); 
       } 
      } 

這應該很好。欲瞭解更多信息,請聯繫我。 希望這會幫助你。