一、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;
}
												

xstream 解析xml报文的更多相关文章

  1. java 写webservice接口解析xml报文

    1 <!--解析xml报文--> 2 <dependency> 3 <groupId>dom4j</groupId> 4 <artifactId& ...

  2. Xstream 解析xml文件内容

    刚刚接手的一个项目,接到一个对接用户数据的需求,对方使用的是xml格式来传输文件,特此记下解析该类文件的方法 public interface XmlResolver<T> { XStre ...

  3. 解析xml报文,xml与map互转

    这段时间写了一个关于xml报文的工具类,做一下具体的讲解: xml文本 <NTMMessage version="1.03"> <NTMHeader> &l ...

  4. xstream解析xml时遇到特殊字符出错

    在xml中有"&"符号时,解析xml出错 解决办法: 将&替换成&

  5. XML解析---利用XStream解析xml数据及反构造Java对象

    XStream 是一个轻量级的.简单易用的开放源代码 Java库,用于将 Java 对象序列化为 XML 或者再转换回来.而且XStream还能将java对象转成其它格式,比如JSon. 需要用到的包 ...

  6. Xstream解析XML

    <oschina> <catalog>1</catalog> <newsCount>0</newsCount> <pagesize&g ...

  7. Java开发笔记(一百零九)XML报文的定义和解析

    前面介绍了JSON格式的报文解析,虽然json串短小精悍,也能有效表达层次结构,但是每个元素只能找到对应的元素值,不能体现更丰富的样式特征.比如某个元素除了要传输它的字符串文本,还想传输该文本的类型. ...

  8. java生成解析xml的另外两种方法Xstream

    Xstream生成和解析xm和JAXB生成和解析xml的方法. 一,Xstream Xstream非jdk自带的,需要到入Xstream-1.4.3.jar和xpp3_min-1.1.4.jar 1. ...

  9. xml报文解析和组装

    package com.xjts.cipher.util;import java.io.File;import java.io.FileWriter;import java.io.IOExceptio ...

随机推荐

  1. SQLSERVER字符串处理函数

    sqlserver提供了一系列字符串处理函数:substring.left.right.len.charindex.patindex.replace.replicate.stuff.upper.low ...

  2. 20155204 2016-2017-2 《Java程序设计》第2周学习总结

    20155204 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 本章主要学习了Java语言的基础语法,基本同C语言逻辑相通,比较着学不算难理解,包括了一些简 ...

  3. 20155216 2016-2017-2《Java程序设计》课程总结

    20155216 2016-2017-2<Java程序设计>课程总结 (按顺序)每周作业链接汇总 预备作业1:简要内容:我对师生关系的见解 预备作业2:简要内容:有关C语言学习调查以及学习 ...

  4. vim 多个文件切换

    打开多个文件:1.vim还没有启动的时候:在终端里输入 vim file1 file2 ... filen便可以打开所有想要打开的文件2.vim已经启动输入:open file可以再打开一个文件,并且 ...

  5. adb的配置

    http://jingyan.baidu.com/article/2fb0ba405e815f00f2ec5f9e.html 1. 用快捷键Ctrl + Alt + T 打开终端命令工具,电脑不要插入 ...

  6. tomcat如何禁止显示目录和文件列表

    打开   tomcat的安装目录/conf/web.xml   文件 找到: <servlet> <servlet-name>default</servlet-name& ...

  7. 【LG3229】[HNOI2013]旅行

    题面 洛谷 题解 勘误:新的休息点a需要满足的条件2为那一部分小于等于ans 代码 \(100pts\) #include <iostream> #include <cstdio&g ...

  8. DSP5509的USB协议开发

    1. 使用的板子 2. 原理图相关,这个1.5K的上拉电阻,全速和高速上拉在D+,低速上拉在D- 3. 中断处理函数没有搞明白是什么意思?这个工程我怎么基本看不懂? interrupt void US ...

  9. php-laravel安装与使用

    1.框架作用    提供了一些主体功能,方便开发者快速开发 2.PHP框架    laravel    ThinkPHP 3.首先要安装composer软件    1.作用        主要管理PH ...

  10. Maven学习(一)-----Maven安装配置总结

    想要安装 Apache Maven 在Windows 系统上, 需要下载 Maven 的 zip 文件,并将其解压到你想安装的目录,并配置 Windows 环境变量. 所需工具 : JDK 1.8 M ...