在项目中需要用到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