<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互转的代码示例的详细内容,更多请关注php中文网其它相关文章!
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
程序员必备接口测试调试工具:点击使用
Apipost = Postman + Swagger + Mock + Jmeter
Api设计、调试、文档、自动化测试工具
网页生成APP,用做网站的技术去做APP:立即创建
手机网站开发APP、自助封装APP、200+原生模块、2000+映射JS接口按需打包
相关文章
相关视频