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. Anaconda中文版
  2. app 名字 android,SiRi App For Android名字特殊符号_九游手机游戏
  3. Android开发的环境搭建及HelloWorld的实现
  4. 微信转账一次显示两个_微信为啥分红包和转账两大功能?这4个区别你要知道,望相互转告...
  5. java流写入数据库_成为Java流大师–第4部分:数据库流
  6. 詹金斯搭建_詹金斯的Maven报告
  7. C++里将string类字符串(utf-8编码)分解成单个字(可中英混输)
  8. 彻底搞懂javascript中的match, exec的区别
  9. [Spring+Hibernate系列]1.Spring+Hibernate 框架搭建
  10. MySQL基础知识,入门必备
  11. 每日新闻丨阿里巴巴香港IPO指引价每股176港元左右;全球超级计算机500强榜单出炉...
  12. shell特殊命令 sort_wc_unip命令
  13. OJ 2312 Problem B Peach
  14. iOS-Building for iOS Simulator, but the linked and embedded framework ‘XX.framework‘ was built for
  15. 产业园区需要塑造的“六”大品牌
  16. 传统的6d位姿估计fangfa1_6D姿态估计算法汇总(上)
  17. 计算机网络原理第二章答案
  18. 舒伯特小夜曲(钢琴版)
  19. (笔记)SLF4J: No SLF4J providers were found.解决方法
  20. 定期存款可以提前取出来吗_存的定期可以提前取吗

热门文章

  1. 学计算机 数学日记,数学日记3篇
  2. 谷歌浏览器的笔记在哪里_selenium学习笔记之启动谷歌浏览器
  3. p8b75-m修改bios文件_傻瓜式方法:VMWARE使用NAT方式彻底解决开发板无法挂载ubuntu文件的难题...
  4. bui框架与php结合,bui框架前端自定义配色基础属性
  5. openstack连通性检查显示验证失败_从超大规模部署到一体机,浪潮云海引领OpenStack落地新范式...
  6. 【HDU5536】Chip Factory(01字典树+01字典树上删除某个数)
  7. 链表的基本操作:创建、插入、删除操作对应c/c++代码
  8. iis服务器转发消息至服务端,IIS服务器配置NXLog进行syslog转发
  9. 802.x无线认证服务器,无线802.1X认证
  10. html最大化和最小化,电脑上最大化最小化图标变了怎么办