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

前端之家收集整理的这篇文章主要介绍了利用Digester和JABX实现xml和bean之间的转换之对比(三)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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

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

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

猜你在找的XML相关文章