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

最近在做xml和bean之间的转换,最开始采用JABX和Digester来处理。这两种方式均有自己的优缺点,分别适用于不同的情景中。
关于如何使用JABX来实现转换请看我的另一篇文章:http://www.jb51.cc/article/p-bfaprevi-gm.html
适用Digester来实现请看我的这篇文章:http://www.jb51.cc/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是非常方便省时的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇