概述
一、导入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互转的代码示例的详细内容,更多请关注靠谱客其它相关文章!
最后
以上就是潇洒豆芽为你收集整理的XStream实现Bean与xml互转的代码示例的全部内容,希望文章能够帮你解决XStream实现Bean与xml互转的代码示例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复