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

	}
}

  

时间: 2024-12-27 15:37:26

xstream对象xml互转的相关文章

JAVA bean与XML互转---XStream

最近在项目中遇到了Java bean 和XML互转的需求, 本来准备循规蹈矩使用dom4j忽然想起来之前曾接触过的XStream, 一番研究豁然开朗,利器啊利器, 下来就XStream的一些用法与大家分享. XStream是大名鼎鼎的thought works下的一个开源项目, 主要功能是提供JAVA bean 和XML文本之间的转换,另外还提供JAVA bean和JSON之间的转换,这个不在本次讨论的范围内. XStream进行转换是非常简单的,对JAVA bean没有任何要求: 不要求对pr

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

最近在项目中遇到了JAVA bean 和XML互转的需求, 本来准备循规蹈矩使用dom4j忽然想起来之前曾接触过的XStream, 一番研究豁然开朗,利器啊利器, 下来就XStream的一些用法与大家分享. XStream是大名鼎鼎的thought works下的一个开源项目, 主要功能是提供JAVA bean 和XML文本之间的转换,另外还提供JAVA bean和JSON之间的转换,这个不在本次讨论的范围内. XStream进行转换是非常简单的,对JAVA bean没有任何要求: 不要求对pr

XML和对象属性互转的基类

本人做了一个XML和对象属性互转的基类,现在放上来有兴趣拿去看一下,用法很简单,声明一个BaseConversion的子类,该子类与你想转换的对象相对应,然后覆盖基类的两个虚方法,然后在里面写元素与对象属性的转换即可以,废话少说了,还是看代码了,例子也懒得去写了,相信不会很难看懂的: unit XMLConversion; {*******************************************  * brief: XML和对象属性的转换  * autor: linzhenqun

XStream解析XML文本并用反射机制转换为对象

xml文本格式是网络通信中最常用的格式,最近特别研究了一下如何解析xml文本并转换为对象,现在分享一下我最近的学习成果~ 先列一下本例中需要解析的xml文本: Xml代码   <results name="list"> <row pubtime="2016-04-13 16:40:13" author="APP"  id="140" title="什么是公告" content="

JAXB完成XML与Java对象的互转

这段时间都老忙了,甚至连周末所有人员都在赶产品的进度,想想连续上12天班,人都有点晕了!到这会儿终于有点时间,所以准备和大家分享一下JAXB,会不会有人觉得有点陌生呢?没事,这里跟大伙儿简单的描述一下: JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档.从另一方面来讲,JA

XStream实现xml和java对象之间的互相转换,同理JSON也可以

首先去官网下载响应JAR包 http://xstream.codehaus.org/index.html 最少需要两个jar包,一个xstream.jar,一个是xmlpull.jar 首先来看下java对象到xml的转换 package xml; class PhoneNumber { private int code; private int number; public int getCode() { return code; } public void setCode(int code)

xstream 实现xml和对象转换

1.jar包 xstream-1.4.2.jar     xpp3_min-1.1.4c.jar 2.工具类 package com.core.util; import java.lang.reflect.Field; import java.util.Iterator; import java.util.List; import java.util.Map; import com.core.model.Mobile; import com.thoughtworks.xstream.XStrea

XStream解析xml和json

XStream是一个在我看来比较好的一个第三方包了.因为它在解析时支持注解.这样很是方便,并且xml跟json这两种格式的文件都能进行解析,XStream本属于java的一个第三方包,甚是好用,若是拿它在android开发环境,也是能正常解析,但有点美中不足,因为android开发环境时,XStream不太支持json转对象,只支持对象转json,其他xml与对象的互转都支持.这样的话双解析就有了那么一点瑕疵之处,不过话说回来,没多少需求的数据交互会用json跟xml切来切去的,当只是json转

xstream读取xml

xStream可以Java和xml相互转换.下面主要说明xstream读取xml文件(和xstream将Java转化成xml差不多).本次学习用到的是xstream1.4.7 项目中使用到的xml文件 <config name="personconfig"> <!-- <add> --> <!-- 使用addImplicitCollection可以不出现 --> <address> <add>abc;abc<