利用Digester和JABX实现xml和bean之间的转换之对比(三)

最近在做xml和bean之间的转换,最开始采用JABX和Digester来处理。这两种方式均有自己的优缺点,分别适用于不同的情景中。
关于如何使用JABX来实现转换请看我的另一篇文章:http://blog.csdn.net/lchinam/article/details/51785036
适用Digester来实现请看我的这篇文章:http://blog.csdn.net/lchinam/article/details/51820980

下面来说说这两者的对比。
最开始,师兄拿了一个xml叫我用JABX解析,这个xml大概是10级目录结构,有50个左右的标签,然后最重要的标签的实例列表有800个左右。然后我就找了下JABX的资料,试着解析。
JABX入门很简单,主要是利用注解来实现目录解析,这种方式就是按照xml的目录结构,建好相对应的bean,等建好class类,使用JAXBContext 和 Unmarshaller来解析,用不了超过10行的代码,就可以完成。然后师兄就提出如果不需要解析所有的标签,只解析某一个标签的内容,JABX还是需要建立整个的目录结构,当目录比较庞大,建目录也不是一件容易的事情,因此我打算找找其他方法。
然后就找到了Digester,这种方式基本的也是跟JAXB差不多,建好对应的bean,设计相应的解析规则。但是这种方式不支持注解,所以对于标签的解析就要手动添加对应的路径,对于上面的xml文件,要涉及到50个路径,写的我挺累的,然后Digester就是类似于栈的操作,push一个元素,解析完了再pop,再push下一个元素…直到最后的根目录,其实也比较简单,就是这个目录写的太累了。
然后解析一个相同的xml文件,JABX需要386ms,Digester需要537ms。确实JABX效率要比Digester高很多。但是如果不需要解析所有的标签,只需要解析某一些标签的时候,Digester就非常方便了,因为它的目录是手动配置的,所以不需要建立整个目录对应的bean,只需要建立需要被解析的标签对应的bean,然后手动配置一下路径。就可以非常方便的完成解析。
举例说明
xml文件

<a>
  <b>
    <c>
      <d>
      </d>
      <e>
      </e>
    </c>
  </b>
</a>

如果只需要解析中的内容,JABX依然需要建立5个bean分别对应于<a>,<b>,<c>,<d>,<e>
而采用Digester则只需要2个bean,一个对应于根目录<a>,一个对应于<e>。非常简单。

因此JABX和Digester都各有优缺点,总结为,当需要解析的内容比较多,选择JABX会比较高效,而当需要解析的内容只占整个文件的很少部分,则Digester是非常方便省时的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值