Apache Commons:Betwixt介绍
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);
}
}
通过上面的例子,是不是觉得非常简单?当然上面只是简单的例子,更多的功能应用还需要自己去研究。
Apache Commons:Betwixt介绍相关推荐
- JavaMail| Apache Commons Email介绍
Apache Commons Email简介 Apache Commons Email旨在提供一个用于发送电子邮件的API.它建立在JavaMail API之上,旨在简化它. 官网: http://c ...
- Apache Commons Codec介绍
介绍 Commons codec,是项目中用来处理常用的编码方法的工具类包,例如DES.SHA1.MD5.Base64,URL,Soundx等等.不仅是编码,也可用于解码. Maven坐标 <! ...
- Apache Commons 工具类介绍及简单使用(转)
转自:http://www.cnblogs.com/younggun/p/3247261.html Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下 ...
- Apache Commons 工具类介绍及简单使用
Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. 组件 功能介绍 BeanUtils 提供了对于 ...
- Apache Commons工具集简介
文章出处 Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. 组件 功能介绍 BeanUtils ...
- apache commons 系列学习
目前对于开发项目时,时时编写工具类而觉得苦恼,于是打算把apache下的commons系列的组件学习一下 打算写个学习的博客系列 ##学习code地址: https://gitee.com/hugo1 ...
- apache commons lang架包介绍
commons lang组件介绍和学习 介绍 Java语言开发时有一个隐患,那就是java支持null值,这就导致很多时候操作可能会出异常. 因此很多第三方组件都会提供安全null safe 操作(即 ...
- Apache Commons介绍(转载)
一.Commons BeanUtils 说明:针对Bean的一个工具集.由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装. 二.Commons CLI 说明 ...
- Apache Commons:Commons-codec介绍
http://www.zihou.me/html/2011/03/23/2983.html 在实际的应用中,我们经常需要对字符串进行编解码,Apache Commons家族中的Commons Code ...
最新文章
- 中国顶级 AI 研究者数量仅为美国 1/5:美国智库最新全球 AI 实力报告
- JavaScript 操作 Cookie
- Linux screen如何加载用户配置
- 网络爬虫:使用多线程爬取网页链接
- Unity3D 入门 游戏开发 Unity3D portal game development
- 并查集(Union-Find-Set)简洁而高效地处理连通分量的查询与合并
- 思维导图一定要用计算机来完成吗,计算机绘制思维导图有什么优势
- Git 教程学习--第三篇
- day23 java的异常
- django 钉钉扫码登录
- 简单html源码_HTML 文本格式化
- Java的二级动态菜单实现
- 网易云音乐ncm格式转换为mp3
- 生信自学笔记(三)分子数据库
- SpringSocial整合QQ授权登录
- 新手 RISC-V 编程的几点内容
- 该设备正在使用中,请关闭可能使用该设备的所有程序或窗口,然后重试
- 秒杀品牌数据线的开博尔USB3.1Gen2 Type-C数据线评测
- foxtable2018商业版 v18.10.9
- lower_bound和upper_bound的用法
热门文章
- LeetCode 算法 856. 括号的分数
- 动态规划 —— 01背包问题
- 【Linux】一步一步学Linux——ethtool命令(155)
- rufus linux开机密码,使用Rufus 3.4制作Ubuntu 18.04.1 U盘启动盘的方法
- 钉钉提示请勿通过开发者调试模式_钉钉开放平台demo调试异常问题解决:hostname in certificate didn't match...
- 《DLL木马进程内幕大揭秘》
- TCP/IP学习笔记(四)TCP超时重传及拥塞控制
- 编辑距离—leetcode72
- 双系统引导修复与引导项删除
- 立个flag,一个月之内把知识点整理完,放到博客