qq125922714 发表于 2013-2-3 12:55:27

xml格式字符串与java对象互转

import java.lang.reflect.Field;import java.util.List;import com.thoughtworks.xstream.XStream;public class XmlUtil {// 所有需要注册的类的配置,public static final String CONFIGFILE = new GetClassPath().getMyConfigPath()+ "/xml.prop";private static XStream xs = null;private static XmlUtil xmlUtil = null;private XmlUtil() {try {// 获取所有需要与处理的java完整名List list = FileUtil.readFile(CONFIGFILE);//初始化xsxs = alias(list);} catch (ClassNotFoundException e) {e.printStackTrace();}}/** * 获得实例 * @return */public static synchronized XmlUtil getInstance() {if(null == xmlUtil){xmlUtil = new XmlUtil();}return xmlUtil;}/** * 根据类名做反射 ** @param list *            类完整名 * @return * @throws ClassNotFoundException */public XStream alias(List list) throws ClassNotFoundException {XStream xs = new XStream();for (int i = 0; i < list.size(); i++) {Object obj;try {obj = Class.forName((String) list.get(i)).newInstance();Class zz = obj.getClass();aliasAtt(xs, zz);} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}}return xs;}/** * 对类进行xml解析配置 ** @param xs * @param z *            class对象 */public void aliasAtt(XStream xs, Class z) {if (null == z) {return;}// 类名注册xs.alias(z.getSimpleName(), z);Field[] field = z.getDeclaredFields();// 类中成员变量注册,继承的不注册for (int i = 0; i < field.length; i++) {xs.aliasField(field.getName(), z, field.getName());}}/** * xml 格式字符串转换为对象 * @param str * @return */public Object xmlToObject(String str) {return xs.fromXML(str);}/** * 对象转换为xml格式字符串 * @param obj * @return */public String objToXml(Object obj) {return xs.toXML(obj);}}FileUtil.readFile()方法如下/** * 读取文件 ** @param filePath *            文件完整名 * @return 文件内容 * @throws IOException */public static List readFile(String filePath) {List list = new ArrayList();FileInputStream fs = null;InputStreamReader isr = null;BufferedReader br = null;try {fs = new FileInputStream(filePath);isr = new InputStreamReader(fs);br = new BufferedReader(isr);String data = "";while ((data = br.readLine()) != null) {list.add(data.trim());}} catch (IOException e) {e.printStackTrace();} finally {try {if (br != null)br.close();if (isr != null)isr.close();if (fs != null)fs.close();} catch (IOException e) {e.printStackTrace();}}return list;}Test         Printdata pd = new Printdata();pd.setPrintFileList(printFileList);pd.setAuto("1");pd.setBillReceiver("billReceiver");pd.setCustId("cust_id");pd.setYear("2011");pd.setMonth("11");List list = FileUtil.readFile(XmlUtil.CONFIGFILE);XmlUtil xmlUtil = XmlUtil.getInstance();String xml = xmlUtil.objToXml(pd);//对象至xmlSystem.out.println(xml);         Printdata obj = (Printdata)xmlUtil.xmlToObject(xml);//xml至对象
需要的jar包见附件

   
      
      

         
[*]xpp3_min-1.1.4c.jar (24.4 KB)
         
         
[*]下载次数: 1
      

      
   
      
      

         
[*]xstream-1.3.jar (401.5 KB)
         
         
[*]下载次数: 1
      
页: [1]
查看完整版本: xml格式字符串与java对象互转