今天学习XMLSocket,可是在拿到XML字符串数据后,不知该如何解析,JavaEye真是个好地方,终于找到了思路:
http://xiaoer-1982.iteye.com/blog/500333
首先由XML得到XMLList,然后构造出XMLListCollection,最后得到Array,最后构造ArrayCollection。
原始XML字符串:
<response>
<resp time="" no="" lat="" lng="" />
<resp ............ />
</response>
var response:XML = new XML(event.data);
var xmlListColl:XMLListCollection = new XMLListCollection();
xmlListColl.source = response.elements("resp");
var arr:Array = xmlListColl.toArray();
var arrColl:ArrayCollection = new ArrayCollection();
arrColl.source = arr;
for(var i:int = 0; i < arrColl.length; i++)
{
var resp:Object = arrColl.getItemAt(i);
result.text += resp.@time + ":" + resp.@no + "[" + resp.@lat + ", " + resp.@lng + "]\n";
txtiptName.text = resp.@no;
this.onChange(1);
}
将整个AS文件发上来:
/**
* ActionScript file for ArrayCarDemo.mxml
*/
import flash.events.DataEvent;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.net.Socket;
import flash.net.XMLSocket;
import flash.system.Security;
import flash.xml.XMLDocument;
import mx.collections.ArrayCollection;
import mx.collections.XMLListCollection;
import mx.rpc.xml.SimpleXMLDecoder;
private var socket:Socket;
private var xmlSocket:XMLSocket;
private function onConnect():void
{
result.text += "==>开始连接......\n";
Security.loadPolicyFile("xmlsocket://GMapWeb:9999");
xmlSocket = new XMLSocket();
xmlSocket.connect("GMapWeb", 9999);
xmlSocket.addEventListener(Event.CONNECT, onConnected);
xmlSocket.addEventListener(Event.CLOSE,onClosed);
xmlSocket.addEventListener(DataEvent.DATA,onRecvData);
xmlSocket.addEventListener(IOErrorEvent.IO_ERROR, onIoError);
xmlSocket.addEventListener(ProgressEvent.PROGRESS, onProgress);
xmlSocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecureError);
}
private function onIoError(evt:IOErrorEvent):void
{
result.text += "IO错误:" + evt.text + "\n";
}
private function onProgress(evt:ProgressEvent):void
{
result.text += "Progress:" + evt.target.toString() + "\n";
}
private function onSecureError(evt:SecurityErrorEvent):void
{
result.text += "安全错误:" + evt.text + "\n";
}
internal function onConnected(event:Event):void
{
// xmlSocket.send("<test/>\n");
if(xmlSocket.connected)
{
result.text += "已经成功连接到服务器\n";
}
else
{
result.text += "失败:连接到服务器\n";
}
}
internal function onClosed(event:Event):void
{
result.text += "已经断开服务器\n";
}
private function onRecvData(event:DataEvent):void
{
var response:XML = new XML(event.data);
var xmlListColl:XMLListCollection = new XMLListCollection();
xmlListColl.source = response.elements("resp");
var arr:Array = xmlListColl.toArray();
var arrColl:ArrayCollection = new ArrayCollection();
arrColl.source = arr;
for(var i:int = 0; i < arrColl.length; i++)
{
var resp:Object = arrColl.getItemAt(i);
result.text += resp.@time + ":" + resp.@no + "[" + resp.@lat + ", " + resp.@lng + "]\n";
txtiptName.text = resp.@no;
this.onChange(1);
}
result.text += "------------------------";
result.verticalScrollPosition = result.maxVerticalScrollPosition;
}
private function sendXml():void
{
//xmlSocket.send("<msg>" + message.text + "</msg>");
//result.text += message.text + "\n";
//message.text = "";
}
分享到:
相关推荐
flash中XMLSocket类的文档说明
javascript xmlsocket 即时通讯客户端源码
解决xmlsocket 需要的843端口
XMLSOCKET OR JAVA alternation
flash xmlsocket实例源码
flash actionscript3游戏开发之as3的socket通信方式介绍即使用XMLSocket.zip
flash XMLSocket java 通信(采用服务器推技术 解决了乱码 )本东西属于原创
FLASH通过XMLSocket与VB后台通信代码
xmlsocket 实现服务端主动向客户端推送消息
URLLoader(URLStream) FlashRemoting XMLSocket(Socket) FMS/FCS
Array 类、Boolean 类、Camera 类、Color 类、ContextMenu 类、ContextMenuItem 类、Date 类、Error 类、LoadVars 类、LocalConnection 类、... 类、TextField.StyleSheet 类、TextFormat 类、XML 类、XMLSocket 类...
通过E4X语法遍历XML文档 19.3节. 使用正则表达式在E4X中进行查询 19.4节. 添加一个XMLList到XML对象 19.5节. 对一个XMLList或E4X查询进行绑定 19.6节. 从数组中生成XML对象 19.7节. 如何处理XML服务里所返回的命名...
FLASH AS3 SOCKET收发16进制示例
talkboxa talkbox build with skynet实例云风skynet服务端框架研究# clonegit clone git@...<config><ip>forthxu.com</ip><port>10101</port><crossdomain>xmlsocket://forthxu.com:843</crossdomain></config>web访问
flex Socket XMLSocket+vs
2,如果1没有检测到策略,则检测actionscript是否使用了Security.loadPolicyFile(xmlsocket://) 手段提供安全策略,如果还没检测到,则使用第3步检测 3,检测目标服务器目标端口是否提供安全策略。 以下是demo ...
学习flash的XMLsocket的连接处理的实例!
flash中的socket和xmlsocket可以实现真正的双向通信,通过 flex ajax bridge,可以在javascript中使用这两项功能. 可以预见,如果websocket一旦在浏览器中得到实现,将会替代上面两项技术,得到广泛的使用.面对这种状况...
5种方案 当服务器发生数据发生变化时 主动通知前台网页更新页面.zip ajax Comet Flash XMLSocket H5 websocket java applet socket
这是合肥工业大学动漫工具基础这门课的作业,使用flash前端+java后台的方式,用XMLSocket与Java后台通信,有一些缺陷欢迎改进