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);
}
}
通过上面的例子,是不是觉得非常简单?当然上面只是简单的例子,更多的功能应用还需要自己去研究。