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形式文件相互转换的更多相关文章

  1. java socket报文通信(三)java对象和xml格式文件的相互转换

    前两节讲了socket服务端,客户端的建立以及报文的封装.今天就来讲一下java对象和xml格式文件的相互转换. 上一节中我们列举了一个报文格式,其实我们可以理解为其实就是一个字符串.但是我们不可能每 ...

  2. java对象与xml相互转换 ---- xstream

    XStream是一个Java对象和XML相互转换的工具,很好很强大.提供了所有的基础类型.数组.集合等类型直接转换的支持. XStream中的核心类就是XStream类,一般来说,熟悉这个类基本就够用 ...

  3. 使用XStream注解实现Java对象与XML互相转换的代码示例

    本文记录一下使用xstream这个api的注解特性对Java对象与XML字符串相互转换的一些代码示例.    我们很多人都处理过XML文件,也有很多非常成熟的第三方开源软件.如:jdom.dom4j等 ...

  4. 玩转Java对象和XML相互转换

    最近在项目中一直出现Java对象和XML之间的相互转换,一开始由于项目很庞大,我又是临时调度过去,导致在按照项目组长的要求进行写代码的同时,总是在这块云里雾里,最近才慢慢开始搞清楚项目中具体的使用缘由 ...

  5. JAVA对象和XML文档、原来他们之间还有这一出

    最近项目开发中遇到一个问题,访问接口不再通过url地址请求的方式,而是 通过socket发送xml格式的报文到指定服务器来进行信息的统一认证.. 因此组装xml格式的报文字符串以及解析服务器返回的xm ...

  6. 通过JAXB完成Java对象与XML之间的转换

    Java对象转换XML的过程叫marshal. XML转换到Java对象的过程叫unmarshal. 一.Java对象转化为XML 这里省略getter和setter方法 通过标注@XMLRootEl ...

  7. java对象与XML相互转化

    起因 最近在公司做了一次webservice相关的任务,其中我最敢兴趣的就是webservice接受到XML对应的流以后是如何方便的转化成java对象,而java对象又是如何生成对应的XML的. 目的 ...

  8. JAXB 实现java对象与xml之间互相转换

    首先熟悉一下JAXB实现对象与xml互转时常用的一些注解使用: 1.@XmlRootElement,用于类级别的注解,对应xml的跟元素.通过name属性定义这个根节点的名称. 2.@XmlAcces ...

  9. JAXB实现java对象与xml之间转换

    JAXB简介: 1.JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标 ...

随机推荐

  1. 20155217《网络对抗》Exp01 PC平台逆向破解(5)M

    20155217<网络对抗>Exp01 PC平台逆向破解(5)M 实验要求 掌握NOP,JNE,JE,JMP,CMP汇编指令的机器码 掌握反汇编与十六进制编程器 能正确修改机器指令改变程序 ...

  2. IHttpModule不起作用的两个原因

    最近在将系统改造成微服务的过程中,需要对以前的Url请求做兼容性处理,于是就采用了HttpModules模型,但在测试中碰到IHttpModules模块不起作用. 一.IIS配置问题 我用的IIS7. ...

  3. Android开发——官方推荐使用DialogFragment替换AlertDialog

    )比如当屏幕旋转时,AlertDialog会消失,更不会保存如EditText上的文字,如果处理不当很可能引发异常,因为Activity销毁前不允许对话框未关闭.而DialogFragment对话框会 ...

  4. 汇编 循环位移指令 ROL, 循环位移指令 ROR

    知识点:  循环位移指令 ROL  循环位移指令 ROR 一.循环位移指令 ROL ROR int i=0x77886611;//01110111100010000110011000010001 ...

  5. R实战 第九篇:数据标准化

    数据标准化处理是数据分析的一项基础工作,不同评价指标往往具有不同的量纲,数据之间的差别可能很大,不进行处理会影响到数据分析的结果.为了消除指标之间的量纲和取值范围差异对数据分析结果的影响,需要对数据进 ...

  6. python3面向对象注意事项

    一.面向对象super的作用: class parent(object): def __init__(self): self.test() def test(self): print('parent- ...

  7. Linux/centos 7 使用动态ip(dhcp)切换成静态ip后无法联网的问题

    确保:子网掩码,网关,dns一致,最后修改: /etc/sysconfig/network-scripts/ifcfg-ens33 查看网关和子网掩码: route -n 查看dns

  8. jenkins+maven+svn+npm自动发布部署实践

    一.系统版本centos7.6 二.根据jenkins官方安装方法yum安装jenkins 1.进入jenkins官网下载页面https://jenkins.io/download/,选择Red Ha ...

  9. ats 安全

    Controlling Access ats可以配置为仅允许某些客户端使用代理缓存. 1. 为ip_allow.config添加一行,以获取允许访问ats的每个IP地址或IP地址范围; 2. traf ...

  10. Kubernetes调用vSphere vSAN做持久化存储

    参考 1.vSphere Storage for Kubernetes 2.IBM vSphere Cloud Provider 3.GitHub vSphere Volume examples 一. ...