您的位置:首页 > 运维架构 > Apache

Apache Commons:Betwixt介绍

2012-08-30 16:35 169 查看
http://www.zihou.me/html/2011/03/22/2952.html

Betwixt是Apache Commons家族中又一重要的成员,它可以很容易地将一个XML的内容转化为一个JavaBean,这一点与Digester倒很相似,但它同时也可以很容易地将一个JavaBean转化为XML格式的内容。

我们在很多情况下可能都干过这样的事情,那就是把一些内容输出为一个XML内容,每次做这样的工作时是不是觉得特别枯燥没劲?那你就可以试试Betwixt,让Betwixt来帮你做这样的工作,你会发现是如此的轻松容易!

一、官方网址:
http://commons.apache.org/betwixt/ 截至到目前最新版本是0.8。

二、例子

1、 将JavaBean转为XML内容

代码如下:

新创建一个Person类

public class PersonBean {

private String name;

private int age;

/** Need to allow bean to be created via reflection */

public PersonBean() {}

public PersonBean(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String toString() {

return “PersonBean[name='" + name + "',age='" + age + "']“;

}

}

再创建一个WriteExampleApp类:

import java.io.StringWriter;

import org.apache.commons.betwixt.io.BeanWriter;

public class WriteExampleApp {

/**

* 创建一个例子Bean,并将它转化为XML.

*/

public static final void main(String [] args) throws Exception {

// 先创建一个StringWriter,我们将把它写入为一个字符串

StringWriter outputWriter = new StringWriter();

// Betwixt在这里仅仅是将Bean写入为一个片断

// 所以如果要想完整的XML内容,我们应该写入头格式

outputWriter.write(“<?xml version=’1.0′ encoding=’UTF-8′ ?>\n”);

// 创建一个BeanWriter,其将写入到我们预备的stream中

BeanWriter beanWriter = new BeanWriter(outputWriter);

// 配置betwixt

// 更多详情请参考java docs 或最新的文档

beanWriter.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);

beanWriter.getBindingConfiguration().setMapIDs(false);

beanWriter.enablePrettyPrint();

// 如果这个地方不传入XML的根节点名,Betwixt将自己猜测是什么

// 但是让我们将例子Bean名作为根节点吧

beanWriter.write(“person”, new PersonBean(“John Smith”, 21));

//输出结果

System.out.println(outputWriter.toString());

// Betwixt写的是片断而不是一个文档,所以不要自动的关闭掉writers或者streams,

//但这里仅仅是一个例子,不会做更多事情,所以可以关掉

outputWriter.close();

}

}

2、 将XML转化为JavaBean

import
java.io.StringReader;

import org.apache.commons.betwixt.io.BeanReader;

public class ReadExampleApp {

public static final void main(String args[]) throws Exception{

// 先创建一个XML,由于这里仅是作为例子,所以我们硬编码了一段XML内容

StringReader xmlReader = new StringReader(

“<?xml version=’1.0′ encoding=’UTF-8′ ?> <person><age>25</age><name>James Smith</name></person>”);

//创建BeanReader

BeanReader beanReader = new BeanReader();

//配置reader

beanReader.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);

beanReader.getBindingConfiguration().setMapIDs(false);

//注册beans,以便betwixt知道XML将要被转化为一个什么Bean

beanReader.registerBeanClass(“person”, PersonBean.class);

//现在我们对XML进行解析

PersonBean person = (PersonBean) beanReader.parse(xmlReader);

//输出结果

System.out.println(person);

}

}

通过上面的例子,是不是觉得非常简单?当然上面只是简单的例子,更多的功能应用还需要自己去研究。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: