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介绍相关推荐

  1. JavaMail| Apache Commons Email介绍

    Apache Commons Email简介 Apache Commons Email旨在提供一个用于发送电子邮件的API.它建立在JavaMail API之上,旨在简化它. 官网: http://c ...

  2. Apache Commons Codec介绍

    介绍 Commons codec,是项目中用来处理常用的编码方法的工具类包,例如DES.SHA1.MD5.Base64,URL,Soundx等等.不仅是编码,也可用于解码. Maven坐标 <! ...

  3. Apache Commons 工具类介绍及简单使用(转)

    转自:http://www.cnblogs.com/younggun/p/3247261.html Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下 ...

  4. Apache Commons 工具类介绍及简单使用

    Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. 组件 功能介绍 BeanUtils 提供了对于 ...

  5. Apache Commons工具集简介

    文章出处 Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. 组件 功能介绍 BeanUtils ...

  6. apache commons 系列学习

    目前对于开发项目时,时时编写工具类而觉得苦恼,于是打算把apache下的commons系列的组件学习一下 打算写个学习的博客系列 ##学习code地址: https://gitee.com/hugo1 ...

  7. apache commons lang架包介绍

    commons lang组件介绍和学习 介绍 Java语言开发时有一个隐患,那就是java支持null值,这就导致很多时候操作可能会出异常. 因此很多第三方组件都会提供安全null safe 操作(即 ...

  8. Apache Commons介绍(转载)

    一.Commons BeanUtils 说明:针对Bean的一个工具集.由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装. 二.Commons CLI 说明 ...

  9. Apache Commons:Commons-codec介绍

    http://www.zihou.me/html/2011/03/23/2983.html 在实际的应用中,我们经常需要对字符串进行编解码,Apache Commons家族中的Commons Code ...

最新文章

  1. 中国顶级 AI 研究者数量仅为美国 1/5:美国智库最新全球 AI 实力报告
  2. JavaScript 操作 Cookie
  3. Linux screen如何加载用户配置
  4. 网络爬虫:使用多线程爬取网页链接
  5. Unity3D 入门 游戏开发 Unity3D portal game development
  6. 并查集(Union-Find-Set)简洁而高效地处理连通分量的查询与合并
  7. 思维导图一定要用计算机来完成吗,计算机绘制思维导图有什么优势
  8. Git 教程学习--第三篇
  9. day23 java的异常
  10. django 钉钉扫码登录
  11. 简单html源码_HTML 文本格式化
  12. Java的二级动态菜单实现
  13. 网易云音乐ncm格式转换为mp3
  14. 生信自学笔记(三)分子数据库
  15. SpringSocial整合QQ授权登录
  16. 新手 RISC-V 编程的几点内容
  17. 该设备正在使用中,请关闭可能使用该设备的所有程序或窗口,然后重试
  18. 秒杀品牌数据线的开博尔USB3.1Gen2 Type-C数据线评测
  19. foxtable2018商业版 v18.10.9
  20. lower_bound和upper_bound的用法

热门文章

  1. LeetCode 算法 856. 括号的分数
  2. 动态规划 —— 01背包问题
  3. 【Linux】一步一步学Linux——ethtool命令(155)
  4. rufus linux开机密码,使用Rufus 3.4制作Ubuntu 18.04.1 U盘启动盘的方法
  5. 钉钉提示请勿通过开发者调试模式_钉钉开放平台demo调试异常问题解决:hostname in certificate didn't match...
  6. 《DLL木马进程内幕大揭秘》
  7. TCP/IP学习笔记(四)TCP超时重传及拥塞控制
  8. 编辑距离—leetcode72
  9. 双系统引导修复与引导项删除
  10. 立个flag,一个月之内把知识点整理完,放到博客