xml中键名为 英文,键值为中文,读取解析,取值实现翻译
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/*******************************************************************************
* 序列化对象到xml文件
*
* @author zzbk_c8
*
*/
public class ObjectToXMLUtil {
/***************************************************************************
* 序列化方法
*
* @param obj序列化对象
* @param fileName存放地址
*/
public static void objectXmlEncoder(Object obj, String fileName) {
// 创建文件
File file = new File(fileName);
// 判断文件是否存在,如不存在创建
if (!file.exists()) {
// 先创建文件目录
File filePath = new File(fileName.substring(0, fileName
.lastIndexOf("/")));
filePath.mkdirs();
}
try {
// 创建文件的输出流
FileOutputStream out = new FileOutputStream(fileName);
// 创建XML文件对象输出类
XMLEncoder xmlEncoder = new XMLEncoder(out);
// 利用xml对象输出类输出对象到xml文件
xmlEncoder.writeObject(obj);
xmlEncoder.flush();
// 关闭输出对象
xmlEncoder.close();
try {
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("文件输出流关闭错误");
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("文件输出流创建失败");
e.printStackTrace();
}
}
/***************************************************************************
* 反序列化
*
* @param objSource
* xml文件,反序列化内容
* @return 返回集合
*/
public static List objectXmlDecoder(String objSource) {
// 用于接收从xml中凡序列化出来的集合
List objList = new ArrayList();
// 获取xml对象文件资源(反序列化文件)
File filein = new File(objSource);
try {
// 创建从xml文件读取的输入流
FileInputStream fis = new FileInputStream(filein);
// 创建xml解析对象(反序列化对象)并利用参数指定解析内容
XMLDecoder xmlDecoder = new XMLDecoder(fis);
// 从xml解析对象中 凡序列话得到 内存对象(集合)
Object obj = null;
if ((obj = xmlDecoder.readObject()) != null) {
objList.add(obj);
}
fis.close();
xmlDecoder.close();
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("输入流异常");
e.printStackTrace();
}
return objList;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List lista = new ArrayList<HashMap>();
Map map = new HashMap();
map.put("Hello", "你好");
map.put("Hello everyone", "大家好");
map.put("yellow", "黄色");
map.put("green", "绿色");
lista.add(map);
ObjectToXMLUtil.objectXmlEncoder(lista, "d:xml/a.xml");
List list = ObjectToXMLUtil.objectXmlDecoder("d:xml/a.xml");
System.out.println(list);
for (int i = 0; i < list.size(); i++) {
Map m = new HashMap();
List ls = (List) list.get(i);
m = (Map) ls.get(i);
System.out.println(m.get("Hello"));
}
}
}