# jibx_test **Repository Path**: keeley/jibx_test ## Basic Information - **Project Name**: jibx_test - **Description**: jibx - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2015-02-07 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #JiBX example * * * example like [红色是酒][1] ##1 首先新建一个普通的maven项目 引入依赖 ```xml org.jibx jibx-bind 1.2.6 ``` ##2 编写2个测试bean ```java public class Account { private int id; private String name; private String email; private String address; private Birthday birthday; //getter、setter @Override public String toString() { return this.id + "#" + this.name + "#" + this.email + "#" + this.address + "#" + this.birthday; } } public class Birthday { private String birthday; public Birthday(String birthday) { super(); this.birthday = birthday; } //getter、setter public Birthday() {} @Override public String toString() { return this.birthday; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } } ``` ##3 准备开始编写数据绑定关系了, + 第一步是根据build.xml生成binding.xml描述文件,这一步也可以手动自己写,主要是描述实体和xml的映射关系。 + 第二步是根据binding.xml编译生成中间操作类,实际上解码编码的时候都是用的生成的中间类,所以如果需要修改映射的时候也需要重新生成中间类. + ant文件如下,由于刚学ant,写的不好的地方多指教。主要是要在 compile编译的时候 指定destdir位子是maven项目的class位子。其中maven里面的jar文件路径自行修改下。 + binggen是第一步,bind是第二步。生成好binding.xml后,第一步就不用每次都用ant编译了。 ``` Building file. ``` 然后看target目录 应该多出很多 JiBX_开头的class文件。 ##4 编写测试类 :smile: ```java public class JibxTest { private IBindingFactory factory = null; private StringWriter writer = null; private StringReader reader = null; private Account bean = null; @Before public void init() { bean = new Account(); bean.setAddress("北京"); bean.setEmail("email"); bean.setId(1); bean.setName("jack"); Birthday day = new Birthday(); day.setBirthday("2010-11-22"); bean.setBirthday(day); try { factory = BindingDirectory.getFactory(Account.class); } catch (JiBXException e) { e.printStackTrace(); } } @After public void destory() { bean = null; try { if (writer != null) { writer.flush(); writer.close(); } if (reader != null) { reader.close(); } } catch (IOException e) { e.printStackTrace(); } } @Test public void bean2XML() { try { writer = new StringWriter(); // marshal 编组 IMarshallingContext mctx = factory.createMarshallingContext(); mctx.setIndent(2); mctx.marshalDocument(bean, "UTF-8", null, writer); fail(writer); reader = new StringReader(writer.toString()); //unmarshal 解组 IUnmarshallingContext uctx = factory.createUnmarshallingContext(); Account acc = (Account) uctx.unmarshalDocument(reader, null); fail(acc); } catch (Exception e) { e.printStackTrace(); } } public void fail(Object o) { System.out.println(o); } public void failRed(Object o) { System.err.println(o); } } ``` [1]: http://my.oschina.net/hongse/blog/376354 "blog"