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,这样一来可以更好的标 ...
随机推荐
- 实验八 Web基础
实验八 Web基础 1.安装apache sudo apt-get install apache2 2.启动apache service apache2 start 3.使用 netstat -tup ...
- JS 获取每月有几周(每周五到周四算作一周)
原文地址:https://caochangkui.github.io/data-week/ 将每周五至周四算作一周,计算每月有几周,并获取到每周的起始时间. 日期格式化 Date.prototype. ...
- [arc102E]Stop. Otherwise...[容斥+二项式定理]
题意 给你 \(n\) 个完全相同骰子,每个骰子有 \(k\) 个面,分别标有 \(1\) 到 \(k\) 的所有整数.对于\([2,2k]\) 中的每一个数 \(x\) 求出有多少种方案满足任意两个 ...
- JavaScript 为什么不要使用 eval
本文内容 eval 隐藏的 eval 安全问题 结论 参考资料 eval eval 函数是一个高等级的函数,它与任何对象都无关.其参数,如果是一个字符串表达式,那么该函数计算表达式的值:如果是一个 ...
- Java关键字 Finally执行与break, continue, return等关键字的关系
长文短总结: 在程序没有在执行到finally之前异常退出的情况下,finally是一定执行的,即在finally之前的return语句将在finally执行之后执行. finally总是在控制转移语 ...
- win10+anaconda3+python3.6+opencv3.1.0
最近用windows系统比较多,就想在win10下搞一下深度学习这一方面的研究,那么就需要配置好环境巴拉巴拉的一堆东西.默默记个笔记,正所谓“好记性不如烂笔头”. 1.安装Anaconda 这个是一个 ...
- 在nodejs中引进模块要经历的步骤
在nodejs中引入模块需要经历如下3个步骤 1.路径分析 2.文件定位 3.编译执行 在nodejs中模块分为两类,一类是nodejs提供的模块,称为核心模块,另一类的用户编写的模块,称为文件模块. ...
- springboot 前后端分离开发 从零到整(一、环境的搭建)
第一次写文章,有什么错误地方请大家指正,也请大家见谅. 这次为大家分享我做毕业设计的一个过程,之前没有接触过springboot,一直做的都是Javaweb和前端,做了几个前后端分离的项目.现在听说s ...
- 浅谈我的UI设计之路
时光匆匆,进入UI学习已经快两个月了,这段时间过得很充实,因为有压力才有收获. 还记的刚刚学习手绘的时候,对于这个行业只有一个初步的认识,知道自己喜欢,但是真正学习的时候才发现,我要学习的东西还有很多 ...
- CocoaPods 遇到 A host target is a "parent" target which embeds a "child" target 问题解决
正在开发的项目中,集成RN,在使用cocoapods 时候,pod install 遇到如下问题: [!] Unable to find host target(s) for ****Extensio ...