<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
原文地址:https://www.jb51.cc/xml/1194165.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。