JR 精品文章 - XML+正则表达式+反射+脚本引擎 实现简单的业务可配
AD: jr (at) javaresearch.org


首页 | 动态 | 文章 | FAQ  | 新闻 | 下载 | 代码 | 工作 | 调查 | 术语 | 站点 | 图书 | 论坛 | 帮助 | 全部  

TOP | 交流 | 软件 | 专栏 | 开源 | 译/著 | 源码 | API  | 推荐 | FTP  | 积分 | 统计 | 搜索 | Blog | 我们  
首页 » 研究文集 » J2SE综合 搜索标题相关文章 搜索标题相关文章    评论此文章 发表评论     开始监控此文章 开始监控   加入收藏夹  加入收藏夹
XML+正则表达式+反射+脚本引擎 实现简单的业务可配
xiaoyuer 原创   更新:2008-05-23 15:08:35  版本: 1.0   

    最近公司要做一个协议测试程序,要求把所有协议的格式定义都放到XML中,可是XML一般只能用来保存数据,而很难用来定义逻辑运算,所以解析服务器返回的数据包时,就不太好实现了。不过还好,我们的协议定义都是有一定的规律的,现在的问题是如何实现一些“逻辑运算”,如,根据服务器返回的不同的状态,按不同的方式对数据进行解包;还有循环处理等等问题。
    比如对for循环用下面格式进行定义:
  1.     <data name="counter" type="short"/>
  2.     <for count="${counter}-1"><!--通过${counter}这种语法表示对其它节点的引用-->
  3.     <data name="item" type="int"/>
  4.     </for>

    这段XML主要用来表示:先从流中读取一个short,并将其保存到一个HashMap中,然后解析到for节点时,发现它的循环次数是通过引用counter节点得来的,于是我们去HashMap里面找到这个值,并将其作为for的循环次数。在for循环中要做的事情就是从流中读取一个int。
    在这里我们用到XML的几个特性:1、可以用来保存数据,并且数据都包含其特有的含义的;2、可以用来描述数据要格式。
    正则表达式在这里,是用来处理${counter}这种语法的。如果counter的值为10,那么通过正则表达式处理后得到字符串"10-1"。
    反射是用来调用对象的方法或属性。如:${var.toString()}或${var.field}.
    脚本引擎是用来计算简单表达式的,如果"${counter}-1"通过正则表达式处后得到"10-1",接着我们就可以把字符串"10-1"放入到脚本引擎中计算并返回一个int 9。通过脚本引擎还可以处理一些boolean运算,比如我们要把"1<2 && 3>4"转成boolean,就可以通过脚本引擎来实现了。




版权声明   给作者写信
本篇文章对您是否有帮助?  投票:         投票结果:     12       0
作者其它文章: 作者全部文章
评论人:javamonkey 发表时间: Sun May 25 12:33:44 CST 2008
不是太清楚你业务需求,不过这好像规则引擎要做的事情?
或者你可以用模板语言来实现,既然模板语言也包含了你所说的反射,循环支持等
可以参考Freemarker或者Velocity来实现,我在某个项目里就没有用规则引擎做类似的事情,直接用模板技术来实现规则
评论人:ycp2008 发表时间: Fri May 30 10:53:40 CST 2008
我们获取的数据是动态的  难道我们在获取数据前 我们还要去改XML中的数据吗?[M]

这个文章共有 2 条评论
主题: PNG图片处理(Java版) 上一篇文章
返回文章列表 返回〔J2SE综合〕
下一篇文章 主题: short,int,long与byte数组之间的转换


文字广告链接
        自主、快速定制基于JAVA的B/S业务系统          重量级企业在线自定义WEB报表平台
        Excel制表、零代码发布、打印、图表结合——快逸报表,免费、稳定、功能强大的java工具
        技术圈: 关于Java、dotNet、PHP、Ruby、奇客、Web2.0等更多资讯博客精选文章

关于 JR  |  版权声明  |  联系我们 

©2002-2006 JR 版权所有 沪ICP备05019622号