Flex中XML数据转换ArrayCollection

来源:互联网 发布:usb网络打印服务器 编辑:程序博客网 时间:2024/05/16 10:31


在最近项目开发中,架构是javaEE和Flex,原来用到的是BlazeDS通信,但由于后来出现一些问题,必须得改成WebService通信,所以需要在原来的基础上修改,为了尽量减少修改量,所以又添加了一个公共的类作为WebService发布接口,原来的Service层的方法不变。以下为处理过程。

在Java端:

 

public String WebServiceMethod(String param){   List list = service.method(param);//调用原来Service层的方法。   JSONArray jarr =  JSONArray.fromObject(list);   XMLSerializer serializer = new XMLSerializer();   serializer.setElementName("item");   serializer.setRootName("items");   serializer.setTypeHintsEnabled(false);   String retStr = serializer.write(jarr);   return retStr;  }

在Flex端,由于原来所有的dataProvider都是ArrayCollection类型的,所有需要把现在XML数据转换成ArrayCollection.

webService回调:

 
private function loadData(result:ResultEvent):void{var dataPro:XML = XML(result.result as String);var xList:XMLList = dataPro.elements("item");var data:ArrayCollection = xmlToArrayCollection(xList);
}
 
private function xmlToArrayCollection(xml:XMLList):ArrayCollection{                             var xmlDoc:XMLDocument = new XMLDocument(xml.toXMLString());           var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true);            var resultObj:Object = decoder.decodeXML(xmlDoc);            var ac:ArrayCollection = null;            if(resultObj == null){            return new ArrayCollection();            }            if(resultObj.item is ObjectProxy){            ac = new ArrayCollection();            ac.addItem(resultObj.item);            }else{            ac =resultObj.item;            }            return ac;}

 
	
				
		
原创粉丝点击