加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 08:34:10 所属栏目:百科 来源:网络整理
导读:最近在做xml和bean之间的转换,最开始采用JABX和Digester来处理。这两种方式均有自己的优缺点,分别适用于不同的情景中。 关于如何使用JABX来实现转换请看我的另一篇文章:http://www.jb51.cc/article/p-bfaprevi-gm.html 适用Digester来实现请看我的这篇文

最近在做xml和bean之间的转换,最开始采用JABX和Digester来处理。这两种方式均有自己的优缺点,分别适用于不同的情景中。
关于如何使用JABX来实现转换请看我的另一篇文章:http://www.52php.cn/article/p-bfaprevi-gm.html
适用Digester来实现请看我的这篇文章:http://www.52php.cn/article/p-ahrnljpy-gm.html

下面来说说这两者的对比。
最开始,师兄拿了一个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是非常方便省时的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读