一、xml一种格式的数据转换为对象

pom.xml引入

<!--javaBean和XML的双向转换-->
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.</version>
</dependency>

xml文件模板

<?xml version="1.0" encoding="GBK"?>
<MESSAGE>
<MESSAGEHEAD>
<MESSAGEID/>
<SRC/>
</MESSAGEHEAD>
<MESSAGEBODY>
<TRANLIST>
<TRAN_DATE/>
<TRAN_TIME/>
</TRANLIST>
</MESSAGEBODY>
</MESSAGE>

后台需要创建

1、 总类Total

class Total
private static final String headInfo = "<?xml version=\"1.0\" encoding=\"GBK\"?>"; @XStreamAlias("MESSAGEHEAD")
private Head head; @XStreamAlias("MESSAGEBODY")
private Body body;
  // getter setter

2、头部信息Head

class Head
@XStreamAlias("MESSAGEID")
private String messageId; @XStreamAlias("SRC")
private String src; // getter settter

3、Body,明细类集合

class Body
@XStreamImplicit(itemFieldName = "TRANLIST")
private List<Detail> detail;

4、Detail明细类

class Detail
@XStreamConverter(value = XStreamDateConverter.class)
@XStreamAsAttribute
@XStreamAlias("TRAN_DATE")
private Date tranDate; @XStreamAlias("TRAN_TIME")
private String tranTime;
  // getter setter

需要强调的是: String类型不需要转换,其他的类型都可以通过实现接口SingleValueConverter来实现转换格式,编写一个转换日期Date格式的转换,其他类似

public class XStreamDateConverter implements SingleValueConverter {

    private final String YMD = "yyyyMMdd";

    SimpleDateFormat dateFormat = new SimpleDateFormat(YMD);

    @Override
public String toString(Object o) {
String result = null;
if (o instanceof Date) {
Date date = (Date) o;
result = dateFormat.format(date);
}
return result;
} @Override
public Object fromString(String s) {
Date date = null;
if (s != null && !"".equals(s)) {
try {
date = dateFormat.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
}
return date;
} @Override
public boolean canConvert(Class aClass) {
return Date.class == aClass;
}
}

基础工作已经完成,接下来就是将xml转换为对象实体

public static Total transXmlToObject(String xmlBody) {
XStream xStream = new XStream();
xStream.alias("MESSAGE", Total.class);
xStream.alias("MESSAGEHEAD", Head.class);
xStream.alias("MESSAGEBODY", Body.class);
xStream.alias("TRANLIST", Detail.class);
xStream.processAnnotations(new Class[]{Total.class, Head.class, Body.class, Detail.class}); Object object = xStream.fromXML(xmlBody);
Total data = (Total) object;
return data;
}
												

最新文章

  1. Ubuntu Linux启用root用户登录
  2. JSP内置标签 JSP中JavaBean标签 JSP开发模式 EL和JSTL快速入门
  3. linux创建用户,指定组
  4. AspNet WebApi : MessageHandler(消息处理器 )
  5. arm mov 指令
  6. Razor和HtmlHelper的使用意义
  7. HttpHelper万能框架V1.6
  8. npm install 时报错 Unexpected end of input at 1:15930
  9. OSI七层网络模型
  10. SCSS &amp; SASS Color 颜色函数用法
  11. Go smtp发送邮件,带附件
  12. Spring Cloud Stream如何处理消息重复消费?
  13. ASP.NET Web API 2 之文件下载
  14. 2159 ACM 杭电 杀怪 二维费用的背包+完全背包问题
  15. mescroll在vue中的应用
  16. JSP的分页技术
  17. MinGW编译Mongo-CXX-Driver
  18. 《linux 字符处理》- grep/sort/uniq/tr/paste
  19. redhat安装docker
  20. 37mysql 表操作

热门文章

  1. 20155215 《Java程序设计》实验二( Java面向对象程序设计)实验报告
  2. day 6 汽车4S店铺
  3. day4 CSS属性操作
  4. 杂谈001:晨曦Dawn的重新连接
  5. hive 空值、NULL判断
  6. JavaWeb(十三)——使用Session防止表单重复提交
  7. 基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(下)
  8. Java的安装与配置
  9. JS 中屏幕、浏览器和文档的高度、宽度和距离
  10. 2019展望计划(Lamica 2019-Year Plan):