XStream轻松转换xml和java对象

首先引入所需的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






猜你喜欢

转载自blog.csdn.net/sheng_xinjun/article/details/80495778