最近工作中调用接口,返回报文是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("");
user.setUserName("jack");
user.setUserAge("");
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();
} }

xmlToEntity or entityToXML 工作笔记的更多相关文章

  1. 2016年第2周读书笔记与工作笔记 scrollIntoView()与datalist元素

    这一周主要是看了html5网页开发实例与javascript 高级程序设计,供以后翻阅查找.  html5网页开发实例第1章与第二章的2.1部分: 第1章内容: html5在w3c的发展史. 浏览器的 ...

  2. javascript - 工作笔记 (事件四)

    在javascript - 工作笔记 (事件绑定二)篇中,我将事件的方法做了简单的包装,  JavaScript Code  12345   yx.bind(item, "click&quo ...

  3. 工作笔记3.手把手教你搭建SSH(struts2+hibernate+spring)环境

    上文中我们介绍<工作笔记2.软件开发经常使用工具> 从今天開始本文将教大家怎样进行开发?本文以搭建SSH(struts2+hibernate+spring)框架为例,共分为3步: 1)3个 ...

  4. Sencha Touch2 工作笔记

    Sencha Touch2 工作笔记 Ext.dataview.List activate( this, newActiveItem, oldActiveItem, eOpts ) Fires whe ...

  5. 工作笔记5.JAVA图片验证码

    本文主要内容为:利用JAVA图片制作验证码. 设计思路: 1.拷贝AuthImageServlet.class图片验证码 2.配置web.xml 3.JSP中,调用封装好的AuthImageServl ...

  6. 读书笔记——《MySQL DBA 工作笔记》

    关于前言 作者在前言中提出的一些观点很具有参考价值, 梳理完整的知识体系 这是每一个技术流都应该追逐的,完整的知识体系能够使我们对知识的掌握更加全面,而不仅仅局限于点 建立技术连接的思维,面对需求,永 ...

  7. 《工作笔记:移动web页面前端开发总结》

    工作笔记:移动web页面前端开发总结 移动web在当今的发展速度是一日千里,作为移动领域的门外汉,在这段时间的接触后,发现前端开发这一块做一个小小的总结. 1.四大浏览器内核 1.Trident (I ...

  8. 【工作笔记】BAT批处理学习笔记与示例

    BAT批处理学习笔记 一.批注里定义:批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD,这些命令统称批处理命令. 二.常见的批处理指令: 命令清单: 1.RE ...

  9. oracle 工作笔记,不定期更新

    此博客为工作时,所见技术问题的解决方案笔记,欢迎大家转载,转载请注明出处,谢谢~ 更新时间: 2017-07-12 1. clob字段值读取时,借用extractvalue或extract函数读取节点 ...

随机推荐

  1. nfs详解及实现全网备份

    1.统一hosts cat /etc/hosts 172.16.1.5 lb01 172.16.1.6 lb02 172.16.1.7 web02 172.16.1.8 web01 172.16.1. ...

  2. 某考试 T3 Try to find out the wrong in the test

    Discription Hint: 对于 100% 的数据, n<=10^6.

  3. Maven更新POM中的JDK版本(比如更新为JDK1.8)

    默认POM如果不指定JDK版本为1.5,而有些项目需要使用泛型这些,就必须使用1.8版本的JDK,所以需要手动修改POM. 而所涉及到的还是插件maven-compiler-plugin,官方参考:h ...

  4. javascript --- 临时构造器F()

    这篇内容也是之前讲到过的,纯属无聊,莫要见怪.~(- ̄▽ ̄)-~(- ̄▽ ̄)-~(- ̄▽ ̄)-~(- ̄▽ ̄)-~(- ̄▽ ̄)- 正如上文所说,如果所有的prototype属性都指向了一个相同的对象,父 ...

  5. Eval is evil ('Eval是魔鬼') --- eval()函数

    Eval is evil ('Eval是魔鬼') eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码.语法:eval(string): eval的使用场合是什么呢?有时候我 ...

  6. linux删除空行操作:awk、grep、tr、sed

    如下:如何删除空行 shen\nshen\\n sen seh sehe she she 真正删除空行,可以使用vim: 通过命令模式删除空行.vim在命令模式下(在vim里输入英文字符:进入命令模式 ...

  7. vue生命周期的栗子

    vue生命周期的栗子注意触发vue的created事件以后,this便指向vue实例,这点很重要 <!DOCTYPE html><html><head><me ...

  8. C# PropertyGrid控件应用心得 【转】

    源文 : http://blog.csdn.net/luyifeiniu/article/details/5426960 c#stringattributesobjectmicrosoftclass ...

  9. Redis及其Sentinel配置项详细说明

    Redis及其Sentinel配置项详细说明 http://lixiaohui.iteye.com/blog/2315516

  10. phonegap工程中修改app的名字

    针对phonegap比较高的版本,我的是6.4.0. 在phonegap工程中,当添加了iOS和android平台或多个平台后,工程进行了开发,然后觉得app的名字想修改一下(比如在手机上显示的app ...