温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

XStream如何实现Bean与xml互转的案例

发布时间:2020-10-24 16:57:48 来源:亿速云 阅读:449 作者:小新 栏目:编程语言

这篇文章将为大家详细讲解有关XStream如何实现Bean与xml互转的案例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一、导入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 {	@XStreamAsAttribute	private Integer id;	private String name;	@XStreamOmitField	private 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 {	@Test	public 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();	}	}	@Test	public 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

关于XStream如何实现Bean与xml互转的案例就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI