`
haoningabc
  • 浏览: 1498232 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jibx的helloworld

    博客分类:
  • java
阅读更多
参考http://jibx.sourceforge.net/fromcode/bindgen-example1.html
下载jibx_1_2_3.zip
进入example/bindgen例子
现象就是,根据xml生成bean,操作算出总金额后,之后又转换回xml,可以比较下和xml有什么不同。
其实就是bean,生成转换文件,xml--->bean--->xml
步骤:
1.根据javabean生成class
2.更具class生成binding.xml和xsd,为bean生成xml提供基础
3.bind,根据binding.xml和xsd生成jibx的class(factory,adapter,bean对应等)
4.根据xml生成bean对象,操作完之后,还能把bean对象转换成xml

使用ant
build.xml说明:
target----->full分解一下
1.compile-----编译
    Address.java
    Customer.java
    Item.java
    Order.java
    Shipping.java
    主要是Order.java,其他类在order中
2.custgen1----->custgen
    生成bingding.xml和starter1.xsd
用来进行转换的
3.bind
    生成jibx的类
4.test
Test.java里面这样写的
package org.jibx.starter1;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Iterator;
import org.jibx.runtime.BindingDirectory;
import org.jibx.runtime.IBindingFactory;
import org.jibx.runtime.IMarshallingContext;
import org.jibx.runtime.IUnmarshallingContext;
import org.jibx.runtime.JiBXException;
public class Test
{
	/*第一个参数是输入的xml ,第二个参数是输出的xml*/
	public static void main(String[] args) {
        if (args.length < 2) {
            System.out.println("Usage: java -cp ... " + "org.jibx.starter1.Test in-file out-file");
            System.exit(0);
        }
		try {
            // unmarshal customer information from file
            IBindingFactory bfact = BindingDirectory.getFactory(Order.class);
            IUnmarshallingContext uctx = bfact.createUnmarshallingContext();
            FileInputStream in = new FileInputStream(args[0]);
            Order order = (Order)uctx.unmarshalDocument(in, null);//Unmarshal是将xml文件转换成java对象
            // compute the total amount of the order
            float total = 0.0f;
            for (Iterator<Item> iter = order.getItems().iterator(); iter.hasNext();) {
                Item item = iter.next();
                total += item.getPrice() * item.getQuantity();
            }
            order.setTotal(new Float(total));//把bean处理了一下
			// marshal object back out to file (with nice indentation, as UTF-8)
			IMarshallingContext mctx = bfact.createMarshallingContext();
			mctx.setIndent(2);
			FileOutputStream out = new FileOutputStream(args[1]);
			mctx.setOutput(out, null);
			mctx.marshalDocument(order);//把java对象转换成xml文件
			System.out.println("Unmarshalled and marshalled order with " + order.getItems().size() + " items and total value " + total);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
            System.exit(1);
		} catch (JiBXException e) {
			e.printStackTrace();
            System.exit(1);
		}
	}
}

分享到:
评论

相关推荐

    axis2 webservice入门手册(JS,Java,PHP调用实例源码)www.sietoo.com出品

    ### Axis2 WebService 入门手册知识点...通过以上步骤,我们完成了 Axis2 WebService 的基础搭建及一个简单的 HelloWorld 服务实例。这些内容不仅适用于初学者快速上手,也为后续更复杂的服务开发奠定了坚实的基础。

    Spring.3.x企业应用开发实战(完整版).part2

    2.1.1 比Hello World更适用的实例 2.1.2 实例功能简介 2.2 环境准备 2.2.1 创建库表 2.2.2 建立工程 2.2.3 类包及Spring配置文件规划 2.3 持久层 2.3.1 建立领域对象 2.3.2 UserDao 2.3.3 LoginLogDao 2.3.4 在...

    Spring3.x企业应用开发实战(完整版) part1

    2.1.1 比Hello World更适用的实例 2.1.2 实例功能简介 2.2 环境准备 2.2.1 创建库表 2.2.2 建立工程 2.2.3 类包及Spring配置文件规划 2.3 持久层 2.3.1 建立领域对象 2.3.2 UserDao 2.3.3 LoginLogDao 2.3.4 在...

    spring-framework-reference4.1.4

    Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................

    spring-framework-reference-4.1.2

    Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................

Global site tag (gtag.js) - Google Analytics