使用XBlink操作XML

 

1.为什么使用XBlink?

 

两个项目进行交互,交互方式使用XML。

使用XBlink可以简化此工作。

 

XBlink项目地址:http://code.google.com/p/xblink/

 

 

2.使用方法

 

首先把XBlink的jar包加入项目的CLASSPATH

 

在项目中写好两个通用的工具类,内容如下:

 

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.List;

import org.nutz.log.Log;
import org.nutz.log.Logs;
import org.xblink.XBlink;

import test.AppUser;

/**
 * 数据库数据转XML
 * 
 *
 */
@SuppressWarnings("unchecked")
public class DataToXML {
	public static Log log = Logs.get();
	
	/**
	 * 转换用户数据到XML
	 * 
	 * @throws Exception
	 */
	public static void buildAppUserUseXBlink(String fileNamePath,List<AppUser> userList) throws Exception{
		if(null != userList){
			log.info("用户表(app_user)数据转换...");
			outPutXMLUseXBlink(userList, new Class[]{AppUser.class}, fileNamePath, "appUser.xml");
		}
	}
	
	/**
	 * 使用XBlink生成XML 
	 * 
	 * @param o 准备序列化得对象
	 * @param classes 对象以及相关对象的class类型
	 * @param path 路径
	 * @param fileName 文件名称(只是文件名称)
	 * @throws Exception
	 */
	public static void outPutXMLUseXBlink(Object o,Class[] classes,String path,String fileName) throws Exception{
		File file = new File(path);
		boolean exists = file.exists();
		if (exists == false) {
			file.mkdirs();
		}
		String outPath = path + "/" + fileName;
		File f = new File(outPath);
		FileOutputStream fos = new FileOutputStream(f);
		OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
		XBlink.registerClassesToBeUsed(classes);
		XBlink.toXml(o, osw);
		osw.close();
	}
	
	
}
 

 

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;

import org.nutz.log.Log;
import org.nutz.log.Logs;
import org.xblink.XBlink;

import util.PropertiesManager;

/**
 * 将XML转换成对象
 * 
 *
 */
@SuppressWarnings("unchecked")
public class XMLToData {
	public static Log log = Logs.get();
	
	/**
	 * 从XML转换成对象
	 * 
	 * @param classes 类
	 * @param fileName XML文件名
	 * @return Object
	 * @throws Exception
	 */
	public static Object getObjectFromXMLUseXBlink(Class[] classes,String fileName) throws Exception{
		Object tempObj = getObjectFromXMLUseXBlink(classes, PropertiesManager.SAVE_PATH, fileName);
		return tempObj;
	}
	
	/**
	 * 从XML转换成对象
	 * 
	 * @param classes 类
	 * @param path 路径
	 * @param fileName XML文件名
	 * @return Object
	 * @throws Exception
	 */
	public static Object getObjectFromXMLUseXBlink(Class[] classes,String path,String fileName) throws Exception{
		path = path + "/" +fileName;
		File f = new File(path);
		if(f.exists()){//文件存在
			FileInputStream fis = new FileInputStream(f);
			InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
			XBlink.registerClassesToBeUsed(classes);
			Object tempObj = XBlink.fromXml(isr);
			isr.close();
			return tempObj;
		}else{
			return null;
		}
	}
	
}
 

接下来就是配置model了,配置的关键如下(具体查看XBlink官网):

 

 

import lombok.Data;

import org.nutz.dao.entity.annotation.Id;
import org.nutz.dao.entity.annotation.Table;
import org.xblink.annotation.XBlinkConverter;
import org.xblink.annotation.XBlinkOmitField;
import org.xblink.core.convert.converters.singleValue.BooleanConverter;
import org.xblink.core.convert.converters.singleValue.DateConverter;
import org.xblink.core.convert.converters.singleValue.IntegerConverter;
import org.xblink.core.convert.converters.singleValue.LongConverter;

@Table("app_user")
@Data
public class AppUser {

    @XBlinkOmitField
    @Id
    private Long id;
    private String username;
    private String password; 
    private String confirmPassword;
    private String passwordHint;
    private String firstName;
    private String lastName;
    private String email;
    private String phoneNumber;
    private String website;
    private String address;
    @XBlinkConverter(value=IntegerConverter.class)
    private Integer version;
    @XBlinkConverter(value=BooleanConverter.class)
    private boolean enabled;
    @XBlinkConverter(value=BooleanConverter.class)
    private boolean accountExpired;
    @XBlinkConverter(value=BooleanConverter.class)
    private boolean accountLocked;
    @XBlinkConverter(value=BooleanConverter.class)
    private boolean credentialsExpired;
    @XBlinkConverter(value=LongConverter.class)
    private Long userLevel;
    private String birthday;
    private String sex;
    private String duty;
    private String language;
    private String mobilePhone;
    private String company;
    @XBlinkConverter(value=DateConverter.class)
    private Date expireTime;
    @XBlinkConverter(value=BooleanConverter.class)
    private boolean isAdmin;
    private String memo;
    private String uuId;
    private String fullName ;
	
}
 

 

其中,@XBlinkOmitField 是不在生成的XML中显示,@XBlinkConverter 是格式转换,很好理解的。

 

 

接着就是如何调用了,具体如下:

 

 

/**
	 * 收集用户信息
	 * 
	 * @param folder 生成的用户XML地址
	 * @throws Exception 
	 */
	public static void make(String folder) throws Exception{
		List<AppUser> ul = BaseDao.getDao().query(AppUser.class,Cnd.where("id", "<=", "15"),null);
		DataToXML.buildAppUserUseXBlink(folder, ul);
	}

 

写到这,剩下的事情也就知道该知道怎么做了吧。

 

运行下项目,控制台大概输出如下:

 


生成的XML结果如下:


 

 

 

3.说明下

1)这个例子里面还使用了Nutz框架

2)在model里面使用了 lombok ,省掉了写get和set方法

3)写的不好,凑合看吧

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值