@XStreamAlias

1.特点


  简化的API;
  无映射文件;
  高性能,低内存占用;
  整洁的XML;
  不需要修改对象;支持内部私有字段,不需要setter/getter方法
  提供序列化接口;
  自定义转换类型策略;

2.使用场景


  Transport转换
  Persistence 持久化对象
  Configuration 配置
  Unit Tests 单元测试
  Interface服务之间XML消息的交互

3.model


实体类

import com.thoughtworks.xstream.annotations.XStreamAlias;

/**
* @author ceshi
* @Title: Student
* @ProjectName ceshi
* @Description: TODO
* @date 2018/6/2817:29
*/
@XStreamAlias("Student_Message")
public class Student {
private String id;
private String name;
private String age;
private String achievement; public Student(String id,String name,String age,String achievement){
this.id = id;
this.name = name;
this.age = age;
this.achievement = achievement;
}
public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
} public String getAchievement() {
return achievement;
} public void setAchievement(String achievement) {
this.achievement = achievement;
} @Override
public String toString() {
return "Student{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", age='" + age + '\'' +
", achievement='" + achievement + '\'' +
'}';
}
}

工具类

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver; /**
* @author ceshi
* @Title: XStreamUtils
* @ProjectName ceshi
* @Description: TODO
* @date 2018/6/2817:38
*/
public class XStreamUtils {
/**
* 将Object转换为xml
* @param obj 转换的bean
* @return bean转换为xml
*/
public static String objectToXml(Object obj) {
XStream xStream = new XStream();
//xstream使用注解转换
xStream.processAnnotations(obj.getClass());
return xStream.toXML(obj);
} /**
* 将xml转换为T
* @param <T> 泛型
* @param xml 要转换为T的xml
* @param cls T对应的Class
* @return xml转换为T
*/
public static <T> T xmlToObject(String xml, Class<T> cls){
XStream xstream = new XStream(new DomDriver());
//xstream使用注解转换
xstream.processAnnotations(cls);
return (T) xstream.fromXML(xml);
}
}

测试类

import org.junit.Test;

/**
* @author ceshi
* @Title: JunitXStream
* @ProjectName ceshi
* @Description: TODO
* @date 2018/6/2817:29
*/
public class JunitXStream {
@Test
public void test(){
Student s = new Student("1","张三","18","90");
String xml = XStreamUtils.objectToXml(s);
xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+xml;
xml = xml.replaceAll("__","_");
System.out.println(xml); Student ss = XStreamUtils.xmlToObject(xml,Student.class);
System.out.println(ss);
}
}

结果:

pom:需要使用到  xstream-1.4.8.jar

<dependency>
  <groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.8</version>
</dependency>

注意事项:

  1.XStream有一些小bug,在定义别名中的下划线“_”转换为xml后会变成“__”这个符号,下划线问题可以用下面这个解决

    XStream xStream = new XStream(new XppDriver(new XmlFriendlyNameCoder("_-", "_")));

    也可以像测试类中用:replaceAll("__","_"); 替换掉

java与xml转换 -- XStreamAlias的更多相关文章

  1. 使用XStream是实现XML与Java对象的转换(4)--转换器

    七.转换器(Converter) 我们程序中的POJO是千变万化的,而且需求也是千奇百怪的,所以XStream中的内置的转换器的功能不一定能够满足我们的要求,所以我们就需要自己构建转换器. 1,一个基 ...

  2. Java: xml转换

    java对于xml的转换有很多种,比较有名的有:DOM, DOM4J, JDOM, SAX.这里要介绍的是javax.xml包的对xml文件的转换.相比于前面几种是最简单的. 直接上代码: Stude ...

  3. 使用JAXB来实现Java合xml之间的转换

    使用jaxb操作Java与xml之间的转换非常简单,看个例子就明白了. //javaBean-->xml @Test public void test1() { try { JAXBContex ...

  4. java与xml之间的转换(jaxb)

    使用java提供的JAXB来实现java到xml之间的转换,先创建两个持久化的类(Student和Classroom): Classroom: package com.model; public cl ...

  5. 使用XStream是实现XML与Java对象的转换(1)--简介及入门示例

    一.简单介绍 XStream是thoughtworks开发的开源框架,用于实现XML数据于Java对象.Json数据的转换.它不需要schema或其他的mapping文件就可以进行java对象和xml ...

  6. JAXB XML到java object的转换

    JAXB是Java Architecture for XML Binding的缩写.使用JAXB注解将Java对象转换成XML文件.在这篇教程中,我们将会展示如何使用JAXB来做以下事情: 1. ma ...

  7. Java对象和XML转换

    有时候,我们需要把Java对象转换成XML文件.这时可以用JAXB来实现.(JDK1.6及以后的版本无需导入依赖包,因为已经包含在JDK里了) 假如某个公司有许多部门,每个部门有许多职员,我们可以这样 ...

  8. java读取xml文件并转换成对象,并进行修改

    1.首先要写工具类,处理读取和写入xml文件使用的工具.XMLUtil.javaimport java.io.FileInputStream; import java.io.FileWriter; i ...

  9. 不规矩的xml与JAVA对象互相转换的小技巧-使用Marshaller

    摘要:将XML文档与JAVA对象互转是很常见的需求,如果XML定义很规整这很好实现.然而在现实中“不规矩”的XML可能更常见,Marshaller便无能为力了吗?下面是一个小技巧,调整一下思维便能重用 ...

随机推荐

  1. HP Gen8,9 型号系列服务器更换主板

    更换主板前,记下如下信息,根据具体情况用于更换后的设置用.1.S/N (其实主机箱上会写有,更换后重置)2.ProductID (其实主机箱上会写有,更换后重置)3.iLO IP地址或者MAC地址(根 ...

  2. Facebook Login api

    http://blog.kenyang.net/2012/01/androidfacebook-login-api.html http://blog.kenyang.net/2012/01/faceb ...

  3. 第一个react

    个人觉着react和vue是很相似的,之前还转载过一篇介绍两个异同点的文章,那个时候还完全不懂react,现在才慢慢开始接触,所以只能总结一些个人的心得,首先自然是react的优点了,个人觉着主要有以 ...

  4. [转][Oracle]常见报错及处理

    IIS 在安装 Oracle Client 后,需要命令行执行: iisreset 1.ORA-00257 参考自:https://jingyan.baidu.com/article/f71d6037 ...

  5. PHPer常见的面试题总结

    1.平时喜欢哪些php书籍及博客?CSDN.虎嗅.猎云 2.js闭包是什么? 3.for与foreach哪个更快? 4.php鸟哥是谁?能不能讲一下php执行原理? 5.php加速器有哪些?apc.z ...

  6. IGMP Internet组管理协议 未完

    一.IGMP Internet组管理协议 2.IGMP v2 3.IGMP三版本比较 4.1.1.4 IGMP v2 与 IGMP v1 的兼容 5.IGMP窃听(IGMP Snooping) IGM ...

  7. T-SQL 类型转换

    use StudentManageDB go --定义变量并查询 declare @sumScore int select @sumScore=(CSharp+SQLServerDB) from Sc ...

  8. SCCM2012 R2实战系列之四:初始化配置

    在之前的文章中,我们已经完成了SCCM 2012 R2 独立主站点的部署.为了客户端代理软件的顺利安装和OSD操作系统的分发,我们需要配置组策略及DHCP服务.在本系列的第四部分,跟大家一起分享下如何 ...

  9. webpack入门详解

    webpack入门详解(基于webpack 3.5.4  2017-8-22) webpack常用命令: webpack --display-error-details    //执行打包 webpa ...

  10. OpenJuege 兔子与星空

    总时间限制:  1000ms 内存限制:  10000kB 描述 很久很久以前,森林里住着一群兔子.兔子们无聊的时候就喜欢研究星座.如图所示,天空中已经有了n颗星星,其中有些星星有边相连.兔子们希望删 ...