java用xstream实现xml与实体的互相转化

在项目中需要用到xml与bean之间的相互转化,这个用xstream很方便,于是写了一个例子:

1.需要的jar包

xpp3_min-1.1.4c.jar

xstream-1.4.3.jar


2.源码:

①将xml和obj互相转化的方法

private String obj2xmlTest2(){
		Factory factory = new Factory("大兴化工厂","北京大兴区5号路");
		//客户信息
		IdCard idCard1 = new IdCard("1","山东","1001");
		IdCard idCard2 = new IdCard("2","河北","1002");
		User user1 = new User("小明","北京海淀1号路",11,idCard1);
		User user2 = new User("小兰","北京海淀2号路",10,idCard2);
		List<User> userList = new ArrayList<User>();
		userList.add(user1);
		userList.add(user2);
		//工人信息
		Worker worker1 = new Worker("大熊","大兴区1号");
		Worker worker2 = new Worker("二熊","大兴区2号");
		Worker worker3 = new Worker("七熊","大兴区7号");
		List<Worker> workerList = new ArrayList<Worker>();
		workerList.add(worker1);
		workerList.add(worker2);
		workerList.add(worker3);
		
		factory.setUsers(userList);
		factory.setWorkers(workerList);
		
		XStream xStream = new XStream(); 
		xStream.alias("MyFactory", Factory.class);
		xStream.alias("User", User.class);
		xStream.alias("Worker", Worker.class);
		
		String xml = xStream.toXML(factory);
		System.out.println(xml);
		
		Factory fromXML = (Factory)xStream.fromXML(xml);
		System.out.println(fromXML);
		
		
		
		return null;
	}

②对应的实体:

package com.thinkgem.jeesite.modules.wsc.test;
/**
 * 工厂客户
 * @author sidneylee
 * @date 2015-11-30 上午11:40:09
 * @TODO
 */
public class User {

	private String name;//姓名
	private String address;//地址
	private int age;//年龄
	private IdCard idCard;//身份证信息
	
	public IdCard getIdCard() {
		return idCard;
	}
	public void setIdCard(IdCard idCard) {
		this.idCard = idCard;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	public User(String name, String address, int age, IdCard idCard) {
		this.name = name;
		this.address = address;
		this.age = age;
		this.idCard = idCard;
	}
	@Override
	public String toString() {
		return "User [address=" + address + ", age=" + age + ", idCard="
				+ idCard + ", name=" + name + "]";
	}
	
	
	
	
	
	
}

package com.thinkgem.jeesite.modules.wsc.test;

public class Worker {

	private String name;
	private String address;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Worker() {
		super();
		// TODO Auto-generated constructor stub
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public Worker(String name, String address) {
		this.name = name;
		this.address = address;
	}
	
	
	
	
}

package com.thinkgem.jeesite.modules.wsc.test;

/**
 * 身份证
 * @author sidneylee
 * @date 2015-11-30 上午11:36:38
 * @TODO
 */
public class IdCard {

	private String id;//主键
	private String address;//所属地
	private String cardNum;//身份证号
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getCardNum() {
		return cardNum;
	}
	public void setCardNum(String cardNum) {
		this.cardNum = cardNum;
	}
	public IdCard() {
		super();
		// TODO Auto-generated constructor stub
	}
	public IdCard(String id, String address, String cardNum) {
		this.id = id;
		this.address = address;
		this.cardNum = cardNum;
	}
	
	
	
}

package com.thinkgem.jeesite.modules.wsc.test;

import java.util.List;

public class Factory {

	private String name;
	private String address;
	private List<User> users;
	private List<Worker> workers;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public List<User> getUsers() {
		return users;
	}
	public void setUsers(List<User> users) {
		this.users = users;
	}
	public List<Worker> getWorkers() {
		return workers;
	}
	public void setWorkers(List<Worker> workers) {
		this.workers = workers;
	}
	public Factory() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Factory(String name, String address) {
		this.name = name;
		this.address = address;
	}
	
	
	
}


③控制台打印出的信息:

<MyFactory>
  <name>大兴化工厂</name>
  <address>北京大兴区5号路</address>
  <users>
    <User>
      <name>小明</name>
      <address>北京海淀1号路</address>
      <age>11</age>
      <idCard>
        <id>1</id>
        <address>山东</address>
        <cardNum>1001</cardNum>
      </idCard>
    </User>
    <User>
      <name>小兰</name>
      <address>北京海淀2号路</address>
      <age>10</age>
      <idCard>
        <id>2</id>
        <address>河北</address>
        <cardNum>1002</cardNum>
      </idCard>
    </User>
  </users>
  <workers>
    <Worker>
      <name>大熊</name>
      <address>大兴区1号</address>
    </Worker>
    <Worker>
      <name>二熊</name>
      <address>大兴区2号</address>
    </Worker>
    <Worker>
      <name>七熊</name>
      <address>大兴区7号</address>
    </Worker>
  </workers>
</MyFactory>
com.thinkgem.jeesite.modules.wsc.test.Factory@bf7190


使用XStream实现XML与对象之间的互转可以通过以下步骤完成: 1. 引入XStream库的依赖:在你的项目中引入XStream库的依赖,可以参考我之前提供的Maven和Gradle配置。 2. 定义Java类:创建一个Java类来表示你的对象,并使用XStream提供的注解来指定XML元素和属性与Java类的映射关系。例如: ```java import com.thoughtworks.xstream.annotations.XStreamAlias; @XStreamAlias("person") public class Person { private String name; private int age; // 省略构造函数、getter和setter方法 // ... } ``` 3. 将对象转换为XML:使用XStreamJava对象转换为XML字符串。示例如下: ```java import com.thoughtworks.xstream.XStream; public class Main { public static void main(String[] args) { // 创建XStream实例 XStream xStream = new XStream(); // 设置类别名,用于与XML元素进行映射 xStream.alias("person", Person.class); // 创建一个Person对象 Person person = new Person(); person.setName("John"); person.setAge(30); // 将Person对象转换为XML字符串 String xml = xStream.toXML(person); // 输出XML字符串 System.out.println(xml); } } ``` 以上代码将输出以下XML字符串: ```xml <person> <name>John</name> <age>30</age> </person> ``` 4. 将XML转换为对象:使用XStreamXML字符串转换回Java对象。示例如下: ```java import com.thoughtworks.xstream.XStream; public class Main { public static void main(String[] args) { // 创建XStream实例 XStream xStream = new XStream(); // 设置类别名,用于与XML元素进行映射 xStream.alias("person", Person.class); // XML字符串 String xml = "<person><name>John</name><age>30</age></person>"; // 将XML转换为Person对象 Person person = (Person) xStream.fromXML(xml); // 输出Person对象的属性 System.out.println("Name: " + person.getName()); System.out.println("Age: " + person.getAge()); } } ``` 以上代码将输出: ``` Name: John Age: 30 ``` 通过以上步骤,你可以使用XStream实现XML与对象之间的互转。你可以根据具体的需求对Java类和XML结构进行调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值