XStream--java对象与xml形式文件相互转换
1.pom.xml中添加依赖
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.</version>
</dependency>
2.创建xmlUtil类,并对XStream配置
2.1 解决双下划线:XStream把对象中的属性如person_name转成xml格式时会出现<person__name>,这种双下划线
此时用这种方式可以将双下划线代替成单下划线
//解决双下划线
public static final XmlFriendlyNameCoder nameCoder = new XmlFriendlyNameCoder("-_", "_");
2.2 编码格式:
// 编码格式
private static final String ENCODING = "UTF-8";
2.3 使用dom解析方式
// dom解析驱动
private static final DomDriver fixDriver = new DomDriver(ENCODING, nameCoder);
2.4 通用解析器,把配置都放到XStream对象中
// 通用解析器
public static final XStream XSTREAM = new XStream(fixDriver);
2.5 对象中有日期注意时区处理
//时区
private static final String CHINA_TIME_ZONE = "Asia/Shanghai";
2.6 初始化XStream
static {
// 时区处理
TimeZone zone = TimeZone.getTimeZone(CHINA_TIME_ZONE); //获得时区
XSTREAM.registerConverter(new DateConverter(zone), XStream.PRIORITY_NORMAL);
XSTREAM.autodetectAnnotations(true); //开启序列化的注解形式
XSTREAM.setMode(XStream.NO_REFERENCES);//取消引用,如果没有这一步,会出现xml引用格式reference
}
3. XStream的方法
3.1 报文转对象
public static Object fromXML(String xml) {
Object target = null;
XStream xstream = XSTREAM;
xstream.processAnnotations(AllCase.class);//开启此类的解析,否则无法解析
try {
target = xstream.fromXML(xml);
} catch (Exception e) {
e.printStackTrace();
}
return target;
}
3.2 对象转报文
public static String toXML(Object obj) {
XStream xstream = XSTREAM;
String xml= xstream.toXML(obj);
return xml;
}
3.3 文件流转对象
public static Object fromXML(InputStream in) {
Object target = null;
XStream xstream = XSTREAM;
xstream.processAnnotations(AllCase.class);
try {
target = xstream.fromXML(in);
System.out.println("输入成功");
} catch (Exception e) {
e.printStackTrace();
}
return target;
}
3.4对象转文件流
public static void toXML(Object obj, OutputStream out) {
XStream xstream = XSTREAM;
xstream.toXML(obj,out);
System.out.println("输出成功");
}
PS:XStream将java对象与xml之间序列化与反序列化,XStream自己封装了序列化方法,java类不用实现Serializable接口
XStream--java对象与xml形式文件相互转换的更多相关文章
- java socket报文通信(三)java对象和xml格式文件的相互转换
前两节讲了socket服务端,客户端的建立以及报文的封装.今天就来讲一下java对象和xml格式文件的相互转换. 上一节中我们列举了一个报文格式,其实我们可以理解为其实就是一个字符串.但是我们不可能每 ...
- java对象与xml相互转换 ---- xstream
XStream是一个Java对象和XML相互转换的工具,很好很强大.提供了所有的基础类型.数组.集合等类型直接转换的支持. XStream中的核心类就是XStream类,一般来说,熟悉这个类基本就够用 ...
- 使用XStream注解实现Java对象与XML互相转换的代码示例
本文记录一下使用xstream这个api的注解特性对Java对象与XML字符串相互转换的一些代码示例. 我们很多人都处理过XML文件,也有很多非常成熟的第三方开源软件.如:jdom.dom4j等 ...
- 玩转Java对象和XML相互转换
最近在项目中一直出现Java对象和XML之间的相互转换,一开始由于项目很庞大,我又是临时调度过去,导致在按照项目组长的要求进行写代码的同时,总是在这块云里雾里,最近才慢慢开始搞清楚项目中具体的使用缘由 ...
- JAVA对象和XML文档、原来他们之间还有这一出
最近项目开发中遇到一个问题,访问接口不再通过url地址请求的方式,而是 通过socket发送xml格式的报文到指定服务器来进行信息的统一认证.. 因此组装xml格式的报文字符串以及解析服务器返回的xm ...
- 通过JAXB完成Java对象与XML之间的转换
Java对象转换XML的过程叫marshal. XML转换到Java对象的过程叫unmarshal. 一.Java对象转化为XML 这里省略getter和setter方法 通过标注@XMLRootEl ...
- java对象与XML相互转化
起因 最近在公司做了一次webservice相关的任务,其中我最敢兴趣的就是webservice接受到XML对应的流以后是如何方便的转化成java对象,而java对象又是如何生成对应的XML的. 目的 ...
- JAXB 实现java对象与xml之间互相转换
首先熟悉一下JAXB实现对象与xml互转时常用的一些注解使用: 1.@XmlRootElement,用于类级别的注解,对应xml的跟元素.通过name属性定义这个根节点的名称. 2.@XmlAcces ...
- JAXB实现java对象与xml之间转换
JAXB简介: 1.JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标 ...
随机推荐
- VB CompactDatabase 压缩/修复数据库
Option Explicit Private Sub Command1_Click() On Error GoTo err Dim DbEngine, dbFile As String dbFile ...
- [arm学习]makefile学习总结
makefile不仅仅是一个命令的集合体,其中有一些规则是需要理解掌握的. 首先,了解makefile的规则: //-----------格式---------- 目标 : 依赖1,依赖2 (TAP键 ...
- 开源软件License汇总
用到的open source code越多,遇到的开源License协议就越多.License是软件的授权许可,里面详尽表述了你获得代码后拥有的权利,可以对别人的作品进行何种操作,何种操作又是被禁止的 ...
- Flask学习-前言
前言 使用Flask断断续续加起来快一年了,但是一直没有从源码层去了解其实现原理.加上自己python基础不扎实,所以准备从看一个开源项目开始,希望能够从中窥得武功精髓,让自己水平更上一层楼. Fla ...
- 设计模式 笔记 外观模式 Facade
//---------------------------15/04/16---------------------------- //Facade 外观模式-----对象结构型模式 /* 1:意图: ...
- python中类中属性和方法的具体定义方法和使用
1. Python中类中特性分成属性和方法 属性和方法都分为私有和公有的,私有的只可以在本类中使用外部是无法访问的 2. 定义属性(成员变量)的语法格式(公有属性/私有属性) class 类名: de ...
- linux中使sqlplus能够上下翻页
安装包链接:https://pan.baidu.com/s/1WsQTeEQClM88aEqIvNi2ag 提取码:s241 rlwrap-0.37-1.el6.x86_64.rpm 和 rlwra ...
- linux一切皆文件之tcp socket描述符(三)
一.知识准备 1.在linux中,一切皆为文件,所有不同种类的类型都被抽象成文件(比如:块设备,socket套接字,pipe队列) 2.操作这些不同的类型就像操作文件一样,比如增删改查等 二.环境准备 ...
- PAT甲题题解-1111. Online Map (30)-PAT甲级真题(模板题,两次Dijkstra,同时记下最短路径)
题意:给了图,以及s和t,让你求s到t花费的最短路程.最短时间,以及输出对应的路径. 对于最短路程,如果路程一样,输出时间最少的. 对于最短时间,如果时间一样,输出节点数最少的. 如果最短路程 ...
- RANCHER2.0 的简单使用
1. RANCHER2.0 能够管理 k8s 集群 也能够用来搭建 k8s 集群 但是因为网络问题 只测试了如何去管理集群 还没有去 测试 安装集群. 2. 创建rancher 服务的方法 dock ...