JiBX

        JiBX是一款非常优秀的XML数据绑定框架。它提供灵活的绑定映射文件实现数据对象与XML文件之间的转换;并不需要你修改既有的Java类。另外,它的转换效率是目前很多开源项目都无法比拟的。

        XML已经成为目前程序开发配置的重要组成部分了,而可以用来操作XML文件的开源项目也逐渐成长起来,比如说流行的:Digester、XStream、Castor、JDOM、dom4j、xalan等等,当然也少不了专门为Java语言设计的xml数据绑定框架JiBX。它的主要有转换效率高、配置绑定文件简单、不需要操作xpath文件、不需要写属性的get/set方法、对象属性名与xml文件element名不要相同等优点。

        JiBX工作机制

        使用JiBX绑定xml文档与java对象需要分两步走,第一步是绑定xml文件,也就是映射xml文件与java对象之间的对应关系;第二步是在运行时,实现xml文件与java实例之间的互相转换;这时,它已经与绑定文件无关了,可以说是完全脱耦了。在运行程序之前,需要先配置绑定文件并进行绑定,在绑定过程中它将会动态的修改你程序中相应的class文件,主要是生成对应对象实例的方法和添加被绑定标记的属性JiBX_bindingList等。它使用的技术是BCEL(Byte Code Engineering Library)。

        为何JiBX如此高效

        在说明这个之前,先给大家介绍数据绑定转换中两个通用概念:Unmarshal(数据分解)和Marshal(数据编排);从字面意思也很容易理解,Unmarshal是将xml文件转换成java对象,而Marshal则是将java对象编排成规范的xml文件。JiBX在Unmarshal/Marshal上如此高效,这要归功于使用了XPP技术,而不是使用基于树型(tree-based)方式,将整个文档写入内存,然后进行操作的DOM(Document Object Model);也不是使用基于事件流(event stream)的SAX(Simple API for Xml)。XPP使用的是不断增加的数据流处理方式,同时允许在解析xml文件时中断。 

猜你喜欢

转载自xjtu-liuyang-163-com.iteye.com/blog/1821838