JiBX笔记

注意事项

JiBX:1.2.2 (https://sourceforge.net/projects/jibx/files/jibx/jibx-1.2.2/)
JDK:1.6 (http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html)
ANT:1.9.12 (http://mirrors.shu.edu.cn/apache//ant/binaries/)

版本不一定要是以上的,但是其他的可能会报各种莫名其妙的错误

重要步骤

环境变量

1226359-20180630145146612-1323786558.png

项目结构

1226359-20180630145315456-270063057.png

执行命令及变化

执行的目录:
1226359-20180630145524768-1490903770.png

ant compile bindgen

1226359-20180630145622545-1114119477.png

另一种生成xml的方法

参考:http://www.voidcn.com/article/p-gdeaekhv-kw.html
1226359-20180630152743389-2118213475.png

  • 编译Java类文件,生成class文件
  • 进入class文件目录
  • 执行:
java -cp E:\WORK\jibx_1_2_2\jibx\lib\jibx-tools.jar;bin org.jibx.binding.generator.BindGen Address

1226359-20180630152504324-1451363694.png

一个简单的例子

1226359-20180701205651959-651305527.png

其中jdk是1.6
lib是jibx的jar
1226359-20180701205754877-300386240.png

package com.xh.bean;

public class Student {
    private String name;
    private String SNO;
    private int classNO;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSNO() {
        return SNO;
    }

    public void setSNO(String SNO) {
        this.SNO = SNO;
    }

    public int getClassNO() {
        return classNO;
    }

    public void setClassNO(int classNO) {
        this.classNO = classNO;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", SNO='" + SNO + '\'' +
                ", classNO=" + classNO +
                ", age=" + age +
                '}';
    }
}
import com.xh.bean.Student;
import org.jibx.runtime.BindingDirectory;
import org.jibx.runtime.IBindingFactory;
import org.jibx.runtime.IMarshallingContext;
import org.jibx.runtime.JiBXException;

import java.io.StringWriter;

public class Main {

    public static void main(String[] args) throws JiBXException {
        Student student=new Student();
        student.setAge(12);
        student.setClassNO(111);
        student.setName("jon");
        student.setSNO("NO_ewewewj3413");

        IBindingFactory factory = BindingDirectory.getFactory(Student.class);
        IMarshallingContext mctx= factory.createMarshallingContext();
        StringWriter sw=new StringWriter();
        mctx.setIndent(2);
        mctx.marshalDocument(student, "UTF-8", null, sw);
        System.out.printf(String.valueOf(sw));

    }
}

如果直接运行测试类:
1226359-20180701205938175-961456986.png

就会报错:

Exception in thread "main" Unable to access binding information for class com.xh.bean.Student
Make sure the binding has been compiled
java.lang.NoSuchFieldException: JiBX_bindingList

重要的步骤:

  • 编译项目
    如果执行了测试,这一步可以跳过。
  • 进入编译后的class根目录:
    1226359-20180701210415705-1171033013.png
  • 生成bind.xml,注意完整类名
java -cp bin;D:\ide\jibx_1_2_2\jibx\lib\jibx-tools.jar org.jibx.binding.generator.BindGen -b bind.xml -s src com.xh.bean.Student
  • 绑定xml
java -cp bin;D:\ide\jibx_1_2_2\jibx\lib\jibx-bind.jar org.jibx.binding.Compile -v bind.xml

再次运行测试:

<?xml version="1.0" encoding="UTF-8"?>
<student xmlns="http://xh.com/bean" classNO="111" age="12">
  <name>jon</name>
  <SNO>NO_ewewewj3413</SNO>
</student>

相关资料

  • 参考:
    https://www.ibm.com/developerworks/cn/java/tutorials/j-jibx1/index.html
    http://www.cnblogs.com/hoojo/archive/2011/04/27/2030205.html
    https://www.jianshu.com/p/e2c9aaf1675e
  • 源码

转载于:https://www.cnblogs.com/lanqie/p/9246785.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值