利用XStream在Java对象和XML之间相互转换

XStream是个好东西,可以方便在Java对象和XML之间相互转换,效率和可读性都非常高,下面是我写的一个测试的例子,放出来一块看看。


需要的jar包如下:

xpp3_min-1.1.4c.jar

xstream-1.3.jar


目标:将Persons对象转换xml,再将xml转化为Persons对象。


实现源码列表:


package com.lavasoft.demo3; 

import com.thoughtworks.xstream.XStream; 

import java.util.List; 

import java.util.ArrayList; 

import java.util.Iterator; 

import java.io.StringReader; 

import java.io.FileReader; 

import java.io.File; 

import java.io.FileNotFoundException; 

import org.dom4j.io.SAXReader; 

import org.dom4j.Document; 

import org.dom4j.Node; 

import org.dom4j.DocumentException; 

/** 

* Created by IntelliJ IDEA. 

* File: demo3.java 

* User: leizhimin 

* Date: 2008-3-4 14:44:03 

*/


public class XStreamDemo { 

public static void main(String args[]) { 

testBean2XML(); 

/** 

* 生成一个Persons对象 

* @return Persons对象 

*/


public static Persons getPersons() { 

Address add1 = new Address("type1", "郑州市经三路财富广场1"); 

Address add2 = new Address("type2", "郑州市经三路财富广场2"); 

List addlist1 = new ArrayList(); 

addlist1.add(add1); 

addlist1.add(add2); 

Address add3 = new Address("type3", "郑州市经三路财富广场3"); 

Address add4 = new Address("type4", "郑州市经三路财富广场4"); 

List addlist2 = new ArrayList(); 

addlist2.add(add3); 

addlist2.add(add4); 

Addresses addes1 = new Addresses(addlist1); 

Addresses addes2 = new Addresses(addlist2); 

Person person1 = new Person(addes1, "6666554", "lavasoft", "man"); 

Person person2 = new Person(addes2, "7777754", "yutian", "man"); 

List listPerson = new ArrayList(); 

listPerson.add(person1); 

listPerson.add(person2); 

Persons persons = new Persons(listPerson, "001"); 

return persons; 

/** 

* 利用XStream在Java对象和XML之间相互转换 

*/


public static void testBean2XML() { 

System.out.println("将Java对象转换为xml!\n"); 

Persons persons = getPersons(); 

XStream xstream = new XStream(); 

xstream.alias("address", Address.class); 

xstream.alias("addresses", Addresses.class); 

xstream.alias("person", Person.class); 

xstream.alias("persons", Persons.class); 

String xml = xstream.toXML(persons); 

System.out.println(xml); 

System.out.println("\n将xml转换为Java对象!"); 

Persons cre_person = (Persons) xstream.fromXML(xml); 

System.out.println(cre_person.toString()); 

}


public class Persons { 

private String type; 

private List listPerson; 

public Persons(List listPerson, String type) { 

this.listPerson = listPerson; 

this.type = type; 

public String getType() { 

return type; 

public void setType(String type) { 

this.type = type; 

public List getListPerson() { 

return listPerson; 

public void setListPerson(List listPerson) { 

this.listPerson = listPerson; 

public String toString() { 

StringBuffer sb=new StringBuffer(); 

for(Iterator it=listPerson.iterator();it.hasNext();){ 

Person p=(Person)it.next(); 

sb.append(it.toString()); 

return "Persons{" + 

"type='" + type + '\'' + 

", listPerson=" + sb.toString() + 

"}\n"; 

}


public class Person { 

private String name; 

private String sex; 

private String tel; 

private Addresses addes; 

public Person(Addresses addes, String name, String sex, String tel) { 

this.addes = addes; 

this.name = name; 

this.sex = sex; 

this.tel = tel; 

public Addresses getAddes() { 

return addes; 

public void setAddes(Addresses addes) { 

this.addes = addes; 

public String getName() { 

return name; 

public void setName(String name) { 

this.name = name; 

public String getSex() { 

return sex; 

public void setSex(String sex) { 

this.sex = sex; 

public String getTel() { 

return tel; 

public void setTel(String tel) { 

this.tel = tel; 

public String toString() { 

return "Person{" + 

"addes=" + addes.toString() + 

", name='" + name + '\'' + 

", sex='" + sex + '\'' + 

", tel='" + tel + '\'' + 

"}\n"; 

}


public class Addresses { 

private List listAdd; 

public Addresses(List listAdd) { 

this.listAdd = listAdd; 

public List getListAdd() { 

return listAdd; 

public void setListAdd(List listAdd) { 

this.listAdd = listAdd; 

public String toString() { 

StringBuffer sb=new StringBuffer(); 

for(Iterator it=listAdd.iterator();it.hasNext();){ 

Address add=(Address)it.next(); 

sb.append(add.toString()); 

return "Addresses{" + 

"listAdd=" + sb.toString() + 

"}\n"; 

}


public class Address { 

private String addType; 

private String place; 

public Address(String addType, String place) { 

this.addType = addType; 

this.place = place; 

public String getAddType() { 

return addType; 

public void setAddType(String addType) { 

this.addType = addType; 

public String getPlace() { 

return place; 

public void setPlace(String place) { 

this.place = place; 

public String toString() { 

return "Address{" + 

"addType='" + addType + '\'' + 

", place='" + place + '\'' + 

"}\n"; 

}


运行测试类XStreamDemo,打印出结果:


将Java对象转换为xml! 

 

001 

 

 

6666554 

lavasoft 

man 

 

 

 

type1 

郑州市经三路财富广场1 

 

 

type2 

郑州市经三路财富广场2 

 

 

 

 

 

7777754 

yutian 

man 

 

 

 

type3 

郑州市经三路财富广场3 

 

 

type4 

郑州市经三路财富广场4 

 

 

 

 

 

 

将xml转换为Java对象! 

Persons{type='001', listPerson=java.util.AbstractList$[email][email protected][/email]ractList$Itr@1cde100} 

Process finished with exit code 0 

呵呵,XStream不错吧!

你可能感兴趣的:(利用XStream在Java对象和XML之间相互转换)