将数据从端口传递给xml()

时间:2011-03-31 11:52:48

标签: flex

AM以bytes.my数据的形式从端口读取数据将类似于

<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>"); 

工作正常。

请指导我解决。

3 个答案:

答案 0 :(得分:1)

如果您只是使用套接字获取XML数据,我建议您查看XMLSocket

XML对象不期望在其构造函数中接收字节,您当前正在给它。这就是它无法正常工作的原因。

答案 1 :(得分:1)

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

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

答案 2 :(得分: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.");
                }
            }

这应该可以正常工作。有关更多信息,您可以与我联系。 希望这会对你有所帮助。