# 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"