Digester中正则表达式的使用

  Digester转换xml到bean是比较方便的,但一个很常见的问题是,有时候同一种元素会出现在多个父元素下面,每次为它重写一遍映射的代码当然可以,但太麻烦了,有没有用正则表达式的方式匹配一下这种元素,达到只写一遍的目的呢,于是经过一番探索和邮件列表里的讨论,可以使用RegexRules、SimpleRegexMatcher来完成,不得不说,Digester的文档写得太差了,从文档里找不到任何使用它的方法。

 

xml:

config.xml

 

   这个xml里有Mutable和Constant元素是可以在main或sub元素下同时出现的,而且对于TextTable元素,也可以换成ImgTable,下面的结构完全一样,这段xml是我从项目中摘出来的,作用是描述一些数据到表的映射,有文本表,图片表。

   先看一下不用正则的方式如何写Constant和Mutable元素的映射:

 对于TextTable一种,要分别写sub和main下面的,需要12行来完成,如果再加一种表ImgTable,又要12行,再加N个表,就是12N,非常恐怖吧。如果用正则表达式怎么写呢?

无论添加什么类型的表元素,就这6行就够了,因为无论哪种表,都是一样的结构,爽吧。

贴出用到的所有类。

 ClassItem.java

ConstantProp.java

MutableProp.java

 

 TableMap.java

解析类ConfigManager.java

运行时的截图:

 

   Digester的基本使用请参见我的另一篇文章,http://blog.csdn.net/theoffspring/archive/2011/03/11/6241390.aspx, 听说Digester 3也快出来了,现在正在sandbox阶段,正在测试,支持if/else这样条件表达式,希望越来越好吧。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值