使用asx3m与xstream配合解决flex与java利用httpservice传递xml数据问题
来源:互联网 发布:淘宝千里眼要钱吗 编辑:程序博客网 时间:2024/06/08 07:08
弄flex前端对象与后端java对象利用httpservice交互的问题。比如前端需要user list数据,构造了flex user object类。
后端也存在java user object类,利用xstream组件把list中的user对象序列化成xml数据。在flex端通过httpservice使用E4X format格式获取。
刚开始自己准备通过e4x技术来解析xml,构造flex user object,类似这样的处理方式:
public function fromXML(currentNode:XML):void{
userID = new Number(currentNode.userID);
userName = currentNode.userName;
......
}
不过这种方式太过于繁琐。于是想自己利用flex reflect来实现一个通用的convert或者说类似xstream这样的组件。
当然,首先是去google一把,还真找到两个,一个是XMLConverter (http://www.customware.net/repository/display/FLEX/Integrating+Flex+with+XML+using+XMLConverter),一个就是完全兼容xtream的 asx3m (http://code.google.com/p/asx3m/)。
XMLConverter简单,不过不是开源的,对于解析单个对象的xml格式,还是够的,但是对于解析复杂的包含list结构的,就爱莫能助了。最终还是采用了asx3m,很方便。—— 唯一不爽的就是,asx3m竟然需要依赖VEGAS(http://vegas.googlecode.com/svn/AS3/trunk/src/vegas/)这个庞然大物(其实其只需要hashmap, list等几个辅助类)
使用asx3m确实很方便,两端代码也很简易,如下:
服务器端的java代码:
List<WorkItem> users = um.queryUsers(1);
XStream xstream = new XStream();
xstream.alias("User", User.class);
String xml = xstream.toXML(users);
List<WorkItem> users = um.queryUsers(1);
XStream xstream = new XStream();
xstream.alias("User", User.class);
String xml = xstream.toXML(users);
Flex端的as代码:
import hr.binaria.asx3m.Asx3m;
import hr.binaria.asx3m.Asx3mer;
var xmlc:Asx3mer = Asx3mer.instance;
xmlc.xstream.alias("User", User);
//这个array中就是user对象列表
var array:ArrayCollection = xmlc.fromXML( compXML ) as ArrayCollection;
import hr.binaria.asx3m.Asx3m;
import hr.binaria.asx3m.Asx3mer;
var xmlc:Asx3mer = Asx3mer.instance;
xmlc.xstream.alias("User", User);
//这个array中就是user对象列表
var array:ArrayCollection = xmlc.fromXML( compXML ) as ArrayCollection;
就这么简单。—— 当然,这种方式,需要在两端维护两套对象结构(java object)和(as object),但其扩展性和灵活度要比那种AMF的remoteobject的方式高很多。
刚开始自己准备通过e4x技术来解析xml,构造flex user object,类似这样的处理方式:
[复制此代码]CODE:
public function fromXML(currentNode:XML):void{
userID = new Number(currentNode.userID);
userName = currentNode.userName;
......
}
不过这种方式太过于繁琐。于是想自己利用flex reflect来实现一个通用的convert或者说类似xstream这样的组件。
当然,首先是去google一把,还真找到两个,一个是XMLConverter (http://www.customware.net/repository/display/FLEX/Integrating+Flex+with+XML+using+XMLConverter),一个就是完全兼容xtream的 asx3m (http://code.google.com/p/asx3m/)。
XMLConverter简单,不过不是开源的,对于解析单个对象的xml格式,还是够的,但是对于解析复杂的包含list结构的,就爱莫能助了。最终还是采用了asx3m,很方便。—— 唯一不爽的就是,asx3m竟然需要依赖VEGAS(http://vegas.googlecode.com/svn/AS3/trunk/src/vegas/)这个庞然大物(其实其只需要hashmap, list等几个辅助类)
使用asx3m确实很方便,两端代码也很简易,如下:
服务器端的java代码:
List<WorkItem> users = um.queryUsers(1);
XStream xstream = new XStream();
xstream.alias("User", User.class);
String xml = xstream.toXML(users);
List<WorkItem> users = um.queryUsers(1);
XStream xstream = new XStream();
xstream.alias("User", User.class);
String xml = xstream.toXML(users);
Flex端的as代码:
import hr.binaria.asx3m.Asx3m;
import hr.binaria.asx3m.Asx3mer;
var xmlc:Asx3mer = Asx3mer.instance;
xmlc.xstream.alias("User", User);
//这个array中就是user对象列表
var array:ArrayCollection = xmlc.fromXML( compXML ) as ArrayCollection;
import hr.binaria.asx3m.Asx3m;
import hr.binaria.asx3m.Asx3mer;
var xmlc:Asx3mer = Asx3mer.instance;
xmlc.xstream.alias("User", User);
//这个array中就是user对象列表
var array:ArrayCollection = xmlc.fromXML( compXML ) as ArrayCollection;
就这么简单。—— 当然,这种方式,需要在两端维护两套对象结构(java object)和(as object),但其扩展性和灵活度要比那种AMF的remoteobject的方式高很多。
- 使用asx3m与xstream配合解决flex与java利用httpservice传递xml数据问题
- 使用asx3m与xstream配合解决flex与java利用httpservice传递xml数据问题
- asx3m与xstream在flex中的应用
- flex httpservice与java通讯的中文乱码解决。
- Flex中使用HTTPService与服务器端交换数据
- Flex's HTTPService与JAVA 数据交互实例
- flex的httpservice与java交互过程中的乱码问题
- FLEX与HttpService通信
- flex与java通信三:httpService
- Flex与java交互方法之HttpService
- Flex中HTTPService与java后台通信
- flex通过HTTPService与java通信例子
- 利用HTTPService实现Flex与服务器端低数据量通信
- fixed与flex配合使用
- Flex: 使用HTTPService获取数据
- Flex与.NET互操作(四):使用HttpService、URLReqeust和URLLoader加载/传输数据
- Flex与.NET互操作(四):使用HttpService、URLReqeust和URLLoader加载/传输数据
- Flex与.NET互操作(四):使用HttpService、URLReqeust和URLLoader加载/传输数据
- AOP入门系列(2)---第三只眼看AOP
- 编程小常识总结之二
- Flex扩展HTTPService简化调用接口定义
- 跟我一起写 Makefile
- 初学AJAX的小例子,XMLHttpRequest对象
- 使用asx3m与xstream配合解决flex与java利用httpservice传递xml数据问题
- NFramework开源AOP框架ORM地完成机制与运用
- 数据绑定控件的datasource数据绑定的几种不同方式
- FLEX里HTTPService需注意的事项
- 程序员的牢骚反映出的内心想法
- 将一个8位的数转换成可以按位处理的结构体
- 残缺的优雅
- DataRabbit 轻量的ORM框架
- test