xmlToEntity or entityToXML 工作笔记

最近工作中调用接口,返回报文是String,取值不方便,需要转换为实体,回来自己简单写了个demo,基本上可以满足工作需求。

除了下面代码外,还要创建对应的实体。

package yh.test.t1113;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.*;
import java.util.Date;

/**
 * Created by vincce on 2015/11/13.
 */
public class Test1113 {

    Logger logger = LoggerFactory.getLogger(Test1113.class);

    public static User user(){
        User user = new User();
        user.setUserId("1");
        user.setUserName("jack");
        user.setUserAge("21");
        user.setUserSex("male");
        user.setEmail("3598649001@qq.com");
        user.setCreateTime(new Date());
        return user;
    }

    public static void main(String[] args) {

        /**entity to xml*/
//        xmlToEntity(user());
        /** xml to entity*/
        entityToXML(readLocalText());
        /**read local file*/
//        readLocalText();
    }

    /**
     * 转换器util
     * @param user
     * @return
     */
    public static XStream ConvertUtil(User user) {

        System.out.println("------------开始调用转换器 ConvertUtil------------");

        XStream xStream = new XStream(new DomDriver("GBK"));

        xStream.alias("user", User.class);

        xStream.aliasField("userId", User.class, "userId");
        xStream.aliasField("userName", User.class, "userName");
        xStream.aliasField("userSex", User.class, "userSex");
        xStream.aliasField("userAge", User.class, "userAge");
        xStream.aliasField("email", User.class, "email");
        xStream.aliasField("createTime", User.class, "createTime");

        return xStream;
    }

    /**
     * entity to xml
     * @return
     */
    public static String xmlToEntity(User user) {
        String xml = ConvertUtil(user).toXML(user);
        System.out.println("---------开始输出xml---------");
        System.out.println(xml);
        System.out.println("---------输出xml结束---------");
        return xml;
    }

    /**
     * xml to entity
     * @param strXML 字符串
     * @return
     */
    public static User entityToXML(String strXML){
        User user = (User)ConvertUtil(null).fromXML(strXML,new User());
        System.out.println("------------开始转换为实体------------");
        System.out.println(user.toString());
        System.out.println(user.getUserAge());
        System.out.println("------------实体转换结束------------");
        return user;
    }

    /**
     * 读取本地 xml 文件
     * @return
     */
    public static String readLocalText(){
        StringBuffer stringBuffer = new StringBuffer();
        String str = null;
        String filePath="E:\\study\\test\\userXML.txt";
        System.out.println("------------开始读取本地xml文件------------文件路径"+filePath);

        File file = new File(filePath);

        InputStreamReader inputStreamReader = null;
        BufferedReader bufferedReader = null;
        if(file.exists() && file.isFile()){
            try {
                inputStreamReader = new InputStreamReader(new FileInputStream(file));
                bufferedReader = new BufferedReader(inputStreamReader);
                while ((str = bufferedReader.readLine()) != null){
                    stringBuffer.append(str);
                }
                System.out.println("------------开始输出stringBuffer------------");
                System.out.println(stringBuffer);

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                if(inputStreamReader != null){
                    try {
                        inputStreamReader.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }else {
            System.out.println("指定目录下的文件找不到!");
        }
        System.out.println("------------本地文件输出成功------------");
        return stringBuffer.toString();
    }


}

 

posted @ 2015-11-14 00:55  heyLuer  阅读(998)  评论(0编辑  收藏  举报