xstream对象xml互转

Posted false

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xstream对象xml互转相关的知识,希望对你有一定的参考价值。

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();
		}
		
	}
}

  

以上是关于xstream对象xml互转的主要内容,如果未能解决你的问题,请参考以下文章

JAVA bean与XML互转的利器---XStream

xStream.jar踩坑指南

XStream进行xml和bean互转

springboot XStream进行Bean和xml互转

XStream将XML转换为JAVA对象快速指南

XStream(xml/bean转换)