一、maven仓库jar包坐标
com.thoughtworks.xstream
xstream
1.4.9
二、工具类文件
package com.zj.docconvert.util;
import java.io.StringWriter;
import java.io.Writer;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.CompactWriter;
//
// xml和obj之间相互转换
// @author Jian Jang
// date :2016-05-20
//
///
public class XmlObjUtil {
//
// 对象转换为xml
// @param obj java对象
// @return xml字符串
///
public static String obj2Xml(Object obj, Class> cls){
XStream xs = new XStream();
xs.processAnnotations(cls);
Writer writer = new StringWriter();
xs.marshal(obj, new CompactWriter(writer));
return writer.toString();
}
//
// 将xml转化成java对象
// @param xml字符串
// @param cls java对象类
// @return java对象
///
public static Object xml2Obj(String xml, Class> cls){
XStream xs = new XStream();
xs = new XStream();
xs.processAnnotations(cls);
return xs.fromXML(xml);
}
}
三、测试类
1、对象:班级、学生
//1、班级实体类
package com.zj.util.test;
import java.io.Serializable;
import com.thoughtworks.xstream.annotations.XStreamAlias;
//
// @Description: 班级实体类
// @author Jian Jang
// @version 1.0 2016年5月20日
///
@XStreamAlias("ClassInfo")
public class ClassInfo implements Serializable {
private static final long serialVersionUID = -2301482442415825864L;
@XStreamAlias("id")
private int id;
@XStreamAlias("className")
private String className;
@XStreamAlias("Students")
private Students students;
public ClassInfo() {
super();
}
public void setClassName(String className) {
this.className = className;
}
public String getClassName() {
return className;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setStudents(Students students) {
this.students = students;
}
public Students getStudents() {
return students;
}
}
//学生实体类
package com.zj.util.test;
import java.io.Serializable;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
//
// @Description: 学生实体类
// @author Jian Jang
// @version 1.0 2016年5月20日
///
@XStreamAlias("Student")
public class Student implements Serializable{
private static final long serialVersionUID = 7753577466297600065L;
@XStreamAlias("sNo")
@XStreamAsAttribute
private int sNo;
@XStreamAlias("sName")
private String sName;
@XStreamAlias("age")
private int age;
@XStreamAlias("sex")
private String sex;
public Student() {
super();
}
public void setsNo(int sNo) {
this.sNo = sNo;
}
public int getsNo() {
return sNo;
}
public void setsName(String sName) {
this.sName = sName;
}
public String getsName() {
return sName;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSex() {
return sex;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
//3、学生集合类
package com.zj.util.test;
import java.io.Serializable;
import java.util.List;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
//
// @Description: 学生集合类
// @author Jian Jang
// @version 1.0 2016年5月20日
///
@XStreamAlias("Students")
public class Students implements Serializable {
private static final long serialVersionUID = -6317785303137835174L;
@XStreamImplicit(itemFieldName = "Student")
private List studentInfos;
public Students() {
super();
}
public void setStudentInfos(List studentInfos) {
this.studentInfos = studentInfos;
}
public List getStudentInfos() {
return studentInfos;
}
}
//4/测试类
@Test
public void test01() {
ClassInfo classInfo = new ClassInfo();
classInfo.setId(1);
classInfo.setClassName("网络工程102");
List students = new ArrayList();
Student s1 = new Student();
s1.setsNo(2016001);
s1.setsName("张三");
s1.setSex("男");
s1.setAge(22);
Student s2 = new Student();
s2.setsNo(2016002);
s2.setsName("李四");
s2.setSex("男");
s2.setAge(22);
Student s3 = new Student();
s3.setsNo(2016003);
s3.setsName("王思");
s3.setSex("女");
s3.setAge(18);
students.add(s1);
students.add(s2);
students.add(s3);
Students s = new Students();
s.setStudentInfos(students);
classInfo.setStudents(s);
System.out.println(XmlObjUtil.obj2Xml(classInfo, ClassInfo.class));
}
1
网络工程102
张三
22
男
李四
22
男
王思
18
女