首先引入所需的jar:
xstream-1.4.9、xpp3_min-1.1.4c、dom4j-1.6.1,
或用maven管理jar包时在pom.xml中添加:
<dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream</artifactId> <version>1.4.9</version> </dependency> <!-- https://mvnrepository.com/artifact/xpp3/xpp3_min --> <dependency> <groupId>xpp3</groupId> <artifactId>xpp3_min</artifactId> <version>1.1.4c</version> </dependency> <!-- https://mvnrepository.com/artifact/dom4j/dom4j --> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency>
新建两个实体类:
package domain; public class Address { //国 private String country; //省 private String province; //市 private String city; //县 private String county; //镇 private String town; public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getProvince() { return province; } public void setProvince(String province) { this.province = province; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getCounty() { return county; } public void setCounty(String county) { this.county = county; } public String getTown() { return town; } public void setTown(String town) { this.town = town; } }
package domain; import java.util.List; public class Person { //姓名 private String name; //性别 private String sex; //年龄 private int age; //地址 private List<Address> Address; 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 int getAge() { return age; } public void setAge(int age) { this.age = age; } public List<Address> getAddress() { return Address; } public void setAddress(List<Address> address) { Address = address; } }
最后是工具类:
package util; import java.util.ArrayList; import java.util.List; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; import domain.Address; import domain.Person; public class XsteamUtil { private static XStream xStream; //JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。 static{ xStream = new XStream(new DomDriver()); /* * 使用xStream.alias(String name, Class Type)为任何一个自定义类创建到类到元素的别名 * 如果不使用别名,则生成的标签名为类全名 */ xStream.alias("person", Person.class); xStream.alias("address", Address.class); //将某一个类的属性,作为xml头信息的属性,而不是子节点 xStream.useAttributeFor(Address.class, "country"); //对属性取别名 xStream.aliasField("省", Address.class,"province"); } //xml转java对象 public static Object xmlToBean(String xml){ return xStream.fromXML(xml); } //java对象转xml public static String beanToXml(Object obj){ return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xStream.toXML(obj); } public static void main(String args[]) { long time1 = System.currentTimeMillis(); //测试java对象转xml,java对象中包含集合对象 Person person = new Person(); person.setName("admin管理员"); person.setSex("男"); person.setAge(25); List<Address> adds = new ArrayList<Address>(); Address address1 = new Address(); address1.setCountry("中国"); address1.setProvince("安徽"); address1.setCity("宿州"); address1.setCounty("萧县"); Address address2 = new Address(); address2.setCountry("中国"); address2.setProvince("上海"); address2.setCity(null); address2.setCounty(""); adds.add(address1); adds.add(address2); person.setAddress(adds); String xml = XsteamUtil.beanToXml(person); System.out.println(xml); //测试xml转java对象 Person person2 = (Person) XsteamUtil.xmlToBean(xml); System.out.println(person2.getAddress().get(1).getProvince()); long time2 = System.currentTimeMillis(); System.out.println((time2-time1)+"ms"); } }
转载自:https://blog.csdn.net/aqsunkai/article/details/52196645