一、导入jar包

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

二、重要注解说明

@XStreamAlias 定义别名

@XStreamAsAttribute 定义为属性

@XStreamOmitField 忽略

@XStreamConverter 处理日期格式

@XStreamImplicit(itemFieldName = "roles") 处理List

三、实例

1、定义JavaBean

import java.util.Date;import java.util.List;import com.thoughtworks.xstream.annotations.XStreamAlias;import com.thoughtworks.xstream.annotations.XStreamAsAttribute;import com.thoughtworks.xstream.annotations.XStreamConverter;import com.thoughtworks.xstream.annotations.XStreamImplicit;import com.thoughtworks.xstream.annotations.XStreamOmitField;import com.tzz.util.xml.DateConverter;@XStreamAlias("user")public class User {@XStreamAsAttributeprivate Integer id;private String name;@XStreamOmitFieldprivate int age;private String sex;@XStreamConverter(value = DateConverter.class)private Date birthday = new Date();@XStreamImplicit(itemFieldName = "roles")private List<Role> roles;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public List<Role> getRoles() {return roles;}public void setRoles(List<Role> roles) {this.roles = roles;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}}
import com.thoughtworks.xstream.annotations.XStreamAlias;@XStreamAlias("role")public class Role {private Integer id;private String name;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

2、转换工具类

import java.io.Writer;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Set;import org.dom4j.Element;import com.thoughtworks.xstream.XStream;import com.thoughtworks.xstream.core.util.QuickWriter;import com.thoughtworks.xstream.io.HierarchicalStreamWriter;import com.thoughtworks.xstream.io.xml.PrettyPrintWriter;import com.thoughtworks.xstream.io.xml.XppDriver;public class XStreamXmlUtil {/** XML转Bean对象 */@SuppressWarnings("unchecked")public static <T> T xmlToBean(String xml, Class<T> clazz) {XStream xstream = new XStream();xstream.registerConverter(new DateConverter());xstream.autodetectAnnotations(true);xstream.processAnnotations(clazz);xstream.setClassLoader(clazz.getClassLoader());return (T) xstream.fromXML(xml);}/** Bean对象转XML */public static String beanToXml(Object bean) {//return "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + new XStream().toXML(bean);XStream xstream = new XStream();xstream.registerConverter(new DateConverter());xstream.autodetectAnnotations(true);return xstream.toXML(bean);}}

3、测试类

import java.util.ArrayList;import java.util.Date;import java.util.List;import org.junit.Test;import com.tzz.test.util.xml.entity.Role;import com.tzz.test.util.xml.entity.User;import com.tzz.util.xml.XStreamXmlUtil;public class TestXStreamXmlUtil {@Testpublic void testBeanToXml() {try {User user = new User();user.setId(1);user.setName("Test");user.setAge(20);user.setSex("1");user.setBirthday(new Date());Role role = new Role();role.setId(1);role.setName("角色1");Role role2 = new Role();role2.setId(2);role2.setName("角色2");List<Role> roles = new ArrayList<Role>();roles.add(role);roles.add(role2);user.setRoles(roles);String xml = XStreamXmlUtil.beanToXml(user);System.out.println(xml);} catch (Exception e) {e.printStackTrace();}}@Testpublic void testXmlToBean() {String xml =   "<user id='1'>"+  "<name>Test</name>"+  "<sex>1</sex>"+  "<birthday>2016-03-10 16:12:46</birthday>"+  "<roles>"+    "<id>1</id>"+    "<name>角色1</name>"+  "</roles>"+  "<roles>"+    "<id>2</id>"+    "<name>角色2</name>"+  "</roles>"+   "</user>";User user = XStreamXmlUtil.xmlToBean(xml, User.class);System.out.println(user.getId() + "--" + user.getName());List<Role> roles = user.getRoles();for (Role r : roles) {System.out.println(r.getName());}}}

4、测试结果

4.1、运行testBeanToXml方法

<user id="1">  <name>Test</name>  <sex>1</sex>  <birthday>2016-03-10 17:35:41</birthday>  <roles>    <id>1</id>    <name>角色1</name>  </roles>  <roles>    <id>2</id>    <name>角色2</name>  </roles></user>

4.2、运行testXmlToBean方法

1--Test角色1角色2

更多相关文章

  1. 关于定义颜色的10篇文章推荐
  2. XmlTextWriter函数定义与用法汇总
  3. XDocument函数定义与用法汇总
  4. 方式性能函数定义与用法汇总
  5. jQuery自定义样式下拉框,支持分组、多选和搜索
  6. Vue.js流程图插件 可自定义流程节点事件
  7. 从一份定义文件详解ELK中Logstash插件结构
  8. HTML5中国象棋游戏,可自定义难度
  9. 10年漫威,到底有多少角色。

随机推荐

  1. 跟着做 Android NDK学习入门如此简单(二)
  2. android数据存取的四种方式
  3. 在activity中调用Application 出现androi
  4. Android——编译release版签名系统
  5. Android开发书籍和教程
  6. android模拟器介绍和基本使用
  7. 使用GDB调试Android(安卓)Native Lib
  8. 开发环境搭建
  9. Android——Toast重复显示解决方法
  10. android 获取屏幕分辨率