java与xml转换 -- XStreamAlias
@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;}@Overridepublic 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 {@Testpublic 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("__","_"); 替换掉

posted on 2018-06-28 18:00 【cosmo】 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/qinxu/p/9240038.html

java与xml转换 -- XStreamAlias相关推荐

  1. java bean与xml转换_Java Bean与xml互相转换的方法分析

    本文实例讲述了Java Bean与xml互相转换的方法.分享给大家供大家参考,具体如下: XML和Java Bean互相转换是一个很有用的功能,因为两者有着前后合作的关系,但解析的过程比较痛苦.下面介 ...

  2. java xml转html_如何在Java中将XML文档转换成HTML文档.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbsp网页设计/UI 如何在Java中将XML文档转换成HTML文档. ...

  3. 使用castor实现xml和java对象的转换

    对于xml和java对象的转换这里用castor进行转换,当然还有别的方式 方式一:castor和xml映射文件配合 首先提供需要解析的XML(内容不重要,重要的是格式) <?xml versi ...

  4. 依靠JAXBContext轻松实现Java和xml的互相转换

    类文件注解:@XmlRootElement不可缺少 @XmlRootElement public class Man { private String name; private int age; p ...

  5. java generatorconfig_generatorConfig.xml配置信息详细

    mybatis-generator有三种用法:命令行.eclipse插件.maven插件.我的以为maven插件最方便,能够在eclipse/intellij idea等ide上能够通用.html 下 ...

  6. Java对象XML序列化框架-Simple2.0

    Java对象XML序列化框架-Simple2.0 Simple是一个XML序列化框架,一个Java 版本宽容的序列化框架,能够快速在Java 平台上开发XML.支持通过annotations完全配置化 ...

  7. JSON与JAVA数据的转换

    JSON-lib这个Java类包用于把bean,map和XML转换成JSON并能够把JSON转回成bean和DynaBean. 下载地址:http://json-lib.sourceforge.net ...

  8. java解析xml的几种方式

    java解析xml的几种方式 博客分类: java基础备忘-好记性不然烂笔头 XMLJava应用服务器数据结构编程  第一种:DOM. DOM的全称是Document Object Model,也即文 ...

  9. java流读取xml_使用FileInputStream(用于Java)读取XML文件?

    这是交易. 对于我的项目,我必须使用Java和XStream对随机树进行序列化和反序列化.我的老师制作了Tree / RandomTree算法,所以我不必担心.我不知道该怎么做是这样的:我使用File ...

  10. java的xml面试题_Java程序员的10个XML面试问答

    java的xml面试题 XML面试问题在各种编程工作面试中非常受欢迎,包括针对Web开发人员的Java面试 . XML是一项成熟的技术,通常用作从一个平台传输数据的标准. XML面试问题包含来自各种X ...

最新文章

  1. mysql导出数据库数据及表结构
  2. 编程的智慧 意外在内网找到的资源
  3. XSS和CSRF详解与防御
  4. 初始Angularjs2
  5. 人工智障学习笔记——深度学习(4)生成对抗网络
  6. pythonfor循环输入_Python之for循环的使用
  7. 背包之01背包、完全背包、多重背包详解
  8. 安装java没有jdk_安装Java 环境 JDK 最完整配置方法
  9. biopython有什么用_Biopython介绍
  10. 没有基础怎么自学渗透测试工程师?
  11. python中成语接龙游戏_python爬虫实现成语接龙1.0
  12. vue-router升级3.0.0以上版本导致Uncaught(in promise) navigation guard报错问题
  13. Java之非对称加密
  14. maxima学习笔记(一)
  15. PHP:使用pecl安装 swoole
  16. 三、生成树协议(Spanning Tree Protocol,STP)
  17. matlab-simulink-simscape的直流电动机模型仿真
  18. java 判断生日和当前时间 对比
  19. 国际海运出口的操作流程是怎样的?
  20. Problem : [usaco2007 Feb]Lilypad Pond

热门文章

  1. php5apache2.dll,Apache2.2.8 + PHP5.2.5不能加载php5apache2.dll
  2. python logger.debug_python处理logger日志
  3. vant 软键盘_H5页面 绝对定位元素被 软键盘弹出时顶起
  4. STL容器 之 vector
  5. mp2551总线收发器芯片作用_什么是现场总线,为什么需要隔离处理?
  6. string不能输入空格,如何输入有空格字符串呢
  7. react如何写ajax,请问如何在React中做Ajax 请求?
  8. shell 查某个字符串_Shell脚本编程04——Shell编程之sed与awk
  9. pandas 日期比较大小_如何计算不同pandas列中两个日期之间的年数
  10. 【Python】如何在Python项目中使用相对路径正确的导入模块/包