利用XStream在Java对象和XML之间相互转换
版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。 |
利用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<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()); } } 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"; } } 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<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"; } } 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} Process finished with exit code 0 呵呵,XStream不错吧! 本文出自 “熔 岩” 博客,转载请与作者联系! 本文出自 51CTO.COM技术博客 |



leizhimin
博客统计信息
热门文章
最新评论
友情链接