当前位置: 首页 > news >正文

使用asx3m与xstream配合解决flex与java利用httpservice传递xml数据问题

过年期间抽空在弄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);

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;

就这么简单。—— 当然,这种方式,需要在两端维护两套对象结构(java object)和(as object),但其扩展性和灵活度要比那种AMF的remoteobject的方式高很多。



相关文章:

  • 你必须知道的最好的开源WEB 资源
  • 四种流行的AJAX框架jQuery,Mootools,Dojo,ExtJS的对比
  • 平衡二叉查找树(AVL)
  • 数据结构之链栈 C++实现
  • C#中用NamedPipe进程间通信
  • C++类四个默认函数---构造函数、析构函数、拷贝函数、赋值函数
  • 实现两个DataTable的联合查询
  • 数学之美:GOOGLE新闻归类算法与余弦定理
  • 数据中心面临IT绩效管理的更高挑战
  • 如何确定网页和查询的相关性
  • 使用线性探测法构造哈希表
  • AjaxGWT
  • jquery获得radio选中项
  • 桌面风格的Web网站
  • UDP与TCP协议
  • 【个人向】《HTTP图解》阅后小结
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • C# 免费离线人脸识别 2.0 Demo
  • es6
  • JAVA之继承和多态
  • js操作时间(持续更新)
  • leetcode388. Longest Absolute File Path
  • node和express搭建代理服务器(源码)
  • Sass 快速入门教程
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Spark RDD学习: aggregate函数
  • SSH 免密登录
  • Terraform入门 - 3. 变更基础设施
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • Unix命令
  • 闭包,sync使用细节
  • 我这样减少了26.5M Java内存!
  • 由插件封装引出的一丢丢思考
  • const的用法,特别是用在函数前面与后面的区别
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • #pragma data_seg 共享数据区(转)
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • ${ }的特别功能
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (k8s中)docker netty OOM问题记录
  • (笔试题)合法字符串
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (分类)KNN算法- 参数调优
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (七)Knockout 创建自定义绑定
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转)Windows2003安全设置/维护
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .net core 控制台应用程序读取配置文件app.config
  • .Net MVC4 上传大文件,并保存表单