您的位置:首页 > 编程语言 > Java开发

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

2008-11-21 11:09 716 查看
利用XStreamJava对象和XML之间相互转换

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

需要的jar包如下:
xpp3_min-1.1.4c.jar
xstream-1.3.jar

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

实现源码列表:

// XStreamDemo.java [/b]
import com.thoughtworks.xstream.XStream;

import java.util.List;
import java.util.ArrayList;

/**
* Created by IntelliJ IDEA.
* User: FuQiuLian
* Date: 2008-11-21
*/
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<Address> addlist1 = new ArrayList<Address>();
addlist1.add(add1);
addlist1.add(add2);

Address add3 = new Address("type3", "郑州市经三路财富广场3");
Address add4 = new Address("type4", "郑州市经三路财富广场4");
List<Address> addlist2 = new ArrayList<Address>();
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<Person> listPerson = new ArrayList<Person>();
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());
}
}

// Persons.java[/b][/b]
import java.util.List;
import java.util.Iterator;

public class Persons {
private String type;
private List<Person> listPerson;

public Persons(List<Person> listPerson, String type) {
this.listPerson = listPerson;
this.type = type;
}

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

public List<Person> getListPerson() {
return listPerson;
}

public void setListPerson(List<Person> 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";
}
}

// Person.java[/b][/b]
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";
}
}

// Addresses.java[/b][/b]
import java.util.List;
import java.util.Iterator;

public class Addresses {
private List<Address> listAdd;

public Addresses(List<Address> listAdd) {
this.listAdd = listAdd;
}

public List<Address> getListAdd() {
return listAdd;
}

public void setListAdd(List<Address> 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";
}
}

// Address.java[/b][/b]
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!

<persons>
<type>001</type>
<listPerson>
<person>
<name>6666554</name>
<sex>lavasoft</sex>
<tel>man</tel>
<addes>
<listAdd>
<address>
<addType>type1</addType>
<place>郑州市经三路财富广场1</place>
</address>
<address>
<addType>type2</addType>
<place>郑州市经三路财富广场2</place>
</address>
</listAdd>
</addes>
</person>
<person>
<name>7777754</name>
<sex>yutian</sex>
<tel>man</tel>
<addes>
<listAdd>
<address>
<addType>type3</addType>
<place>郑州市经三路财富广场3</place>
</address>
<address>
<addType>type4</addType>
<place>郑州市经三路财富广场4</place>
</address>
</listAdd>
</addes>
</person>
</listPerson>
</persons>

将xml转换为Java对象!
Persons{type='001', listPerson=java.util.AbstractList$Itr@1cde100java.util.AbstractList$Itr@1cde100}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: