简介
JiBX是一款非常优秀的XML(Extensible Markup Language)数据绑定框架。它提供灵活的绑定映射文件实现数据对象与XML文件之间的转换;并不需要你修改既有的Java类。另外,另外,它的转换效率是目前很多开源项目都无法比拟的。他的转换效率高,配置绑定文件简单,不需要操作xpath文件,不需要写属性的get/set方法,对象属性名与xml文件element名不用相同,只需在bing的时候建立映射。JiBX使用了XPP(XML Pull Parsing)技术,XPP使用的是不断增加数据流处理方式,同时允许在解析xml文件时中断。
XPP技术中两个通用的概念:
Unmarshal(数据分解):将xml文件转换为java对象
Marshal(数据编排):则是将java对象编排为规范的xml文件
JiBX绑定XML文档与java对象需要分两步走:
第一步:绑定XML文件,也就是映射XML文件与java对象之间的对应关系;
第二步:在运行时,实现xml文件与java实例之间的相互转换。
编译时的依赖包:jibx-bind.jar;bcel.jar,
运行时的依赖包:jibx-run.jar;xpp3.jar
将他们4个包的路径添加到classpath中
简单示例:
定义要处理的xml文件。Data.xml
定义两个java类。Customer.java和Person.java
绑定定义文档。绑定定义文挡是依据绑定定义规范将 XML 数据和 Java 对象绑定的 XML 文挡。文件名为 binding.xml,内容如下:
Binging.xml文件中的name和field属性分别将XML中的元素和java对象中的属性一一绑定起来。
<mapping name="customer" class="Customer"> mapping 元素的 name 和 class 属性将 customer 根元素和 Customer 类绑定在一起。
执行binding compiler
Javac Person.java
Javac Customer.java
Java -jar lib/jibx-bind.jar binding.xml
执行后,生成Person.class, Customer.class, JiBX_bindingCustomer_access.class, JiBX_bindingFactory.class。
执行binding runtime 过程。
测试程序 Test.java,内容如下:
javac Test.java
java test
输出:
cust-num:123456789
first-name:John
last-name:Smith
street:12345 Happy Lane