XML字符串与对象的相互转换

package com.metarnet.collect.senddata;

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

/**
 * <title>使用XML文件存取可序列化的对象的类</title> <description>提供保存和读取的方法</description>
 * 
 * @author 殷晋 <copyright>清华大学汽车工程开发研究院@2005</copyright>
 * @author 王豪杰
 * @version 1.0 2005-8-5 16:44:49
 */
public class ObjectToXMLUtil {
	/**
	 * 把java的可序列化的对象(实现Serializable接口)转化成XML字符串,如果想一次保存多个可序列化对象请用集合进行封装
	 * 
	 * @param obj
	 *            要序列化的可序列化的对象
	 * @return 转化好的XML格式字符串
	 */
	public static String objectXmlEncoder(Object obj) {
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		// 创建XML文件对象输出类实例
		XMLEncoder encoder = new XMLEncoder(baos);
		// 对象序列化输出到XML文件
		encoder.writeObject(obj);
		encoder.flush();
		encoder.close();

		// 关闭序列化工具
		try {
			//关闭流
			baos.close();
			//因为我的应用需要经过web传输,所以要对特殊字符做下处理
			return java.net.URLEncoder.encode(baos.toString("UTF-8"), "UTF-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 将objStr中的XML格式字符串转换成对象列表(必须存在要转化对象对应的类以及类所在的包,并且该类实现了Serializable接口),返回的结果经过了List封装
	 * 
	 * @param objStr
	 *            包含了对象信息XML格式的字符串
	 * @return 由XML字串里面保存的对象构成的List(可能是一个或者多个的序列化保存的对象)
	 */
	public static List objectXmlDecoder(String objStr) {
		List objList = new ArrayList();
		ByteArrayInputStream bis = null;

		try {
			bis = new ByteArrayInputStream(objStr.getBytes("UTF-8"));
		} catch (UnsupportedEncodingException e1) {
			e1.printStackTrace();
		}
		XMLDecoder decoder = new XMLDecoder(bis);
		Object obj = null;
		try {
			while ((obj = decoder.readObject()) != null) {
				objList.add(obj);
			}
		} catch (Exception e) {
		}

		try {
			bis.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		decoder.close();
		return objList;
	}
}

 

你可能感兴趣的:(java,.net,xml,Web)