1、引入jar包
xpp3_min-1.1.4c.jar
xstream-1.4.8.jar
2、建立java bean
package com.jdw.bean; import java.util.ArrayList;
import java.util.List; public class Company {
private List<Department> departments = new ArrayList<Department>(); public List<Department> getDepartments() {
return departments;
} public void addDepartment(Department department) {
this.departments.add(department);
} @Override
public String toString() {
return "Company [departments=" + departments + "]";
} }
package com.jdw.bean; import java.util.ArrayList;
import java.util.List; public class Department {
private String deptId;
private String name;
private List<Staff> staffs = new ArrayList<Staff>(); public String getDeptId() {
return deptId;
} public void setDeptId(String deptId) {
this.deptId = deptId;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public List<Staff> getStaffs() {
return staffs;
} public void addStaff(Staff staff) {
this.staffs.add(staff);
} @Override
public String toString() {
return "Department [deptId=" + deptId + ", name=" + name + ", staffs=" + staffs + "]";
}
}
package com.jdw.bean; public class Staff {
private Integer id;
private String name;
private Integer age;
private String address;
private Double salary; @Override
public String toString() {
return "Staff [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + ", salary=" + salary
+ "]";
} public Staff() {
super();
} public Staff(Integer id, String name, Integer age, String address, Double salary) {
super();
this.id = id;
this.name = name;
this.age = age;
this.address = address;
this.salary = salary;
} 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 Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} public Double getSalary() {
return salary;
} public void setSalary(Double salary) {
this.salary = salary;
} }
3、JunitTest
package com.jdw.test; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException; import org.junit.After;
import org.junit.Before;
import org.junit.Test; import com.jdw.bean.Company;
import com.jdw.bean.Department;
import com.jdw.bean.Staff;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver; public class XmlTest { private XStream xstream; @Before
public void setUp() throws Exception {
xstream=new XStream(new DomDriver());
xstream.alias("company", Company.class);
xstream.alias("department", Department.class);
xstream.alias("staff", Staff.class); xstream.aliasAttribute(Staff.class, "id","cc");
} @After
public void tearDown() throws Exception { } @Test
public void test() { Company company=new Company(); Department dept1=new Department();
dept1.setDeptId("001");
dept1.setName("技术部");
dept1.addStaff(new Staff(1,"黄药师",40,"山东青岛",new Double(10000)));
dept1.addStaff(new Staff(2,"郭靖",20,"山东济南",new Double(3000))); Department dept2=new Department();
dept2.setDeptId("002");
dept2.setName("销售部");
dept2.addStaff(new Staff(1,"黄蓉",20,"山东青岛",new Double(5000)));
dept2.addStaff(new Staff(2,"张三丰",30,"山东济南",new Double(6000))); company.addDepartment(dept1);
company.addDepartment(dept2); String str="company.xml"; try {
PrintWriter pw=new PrintWriter(str,"UTF-8"); xstream.toXML(company, pw); } catch (FileNotFoundException | UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } @Test
public void testRead(){
try {
InputStream in=new FileInputStream(new File("company.xml"));
Company company=(Company)xstream.fromXML(in);
System.out.println(company);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}