天天看點

XML解析---利用XStream解析xml資料及反構造Java對象

XStream 是一個輕量級的、簡單易用的開放源代碼 Java庫,用于将 Java 對象序列化為 XML 或者再轉換回來。而且XStream還能将java對象轉成其它格式,比如JSon。

需要用到的包:xstream-1.3.1

下載下傳連結:http://xstream.codehaus.org/download.html

測試:

建立Person類----

public class Person {

	private String firstname;
	private String lastname;
	private PhoneNumber phone;
	private PhoneNumber fax;
	
	public Person(String firstName, String lastName) {
		this.firstname = firstName;
		this.lastname = lastName;
	}
	public Person() {
	}

	public String getFirstname() {
		return firstname;
	}

	public void setFirstname(String firstname) {
		this.firstname = firstname;
	}

	public String getLastname() {
		return lastname;
	}

	public void setLastname(String lastname) {
		this.lastname = lastname;
	}

	public PhoneNumber getPhone() {
		return phone;
	}

	public void setPhone(PhoneNumber phone) {
		this.phone = phone;
	}

	public PhoneNumber getFax() {
		return fax;
	}

	public void setFax(PhoneNumber fax) {
		this.fax = fax;
	}
}
           

建立PhoneNumber類:

public class PhoneNumber {
	private int code;
	private String number;

	public PhoneNumber(int code, String number) {
		this.code = code;
		this.number = number;
	}
	public PhoneNumber() {
		
	}
	public int getCode() {
		return code;
	}

	public void setCode(int code) {
		this.code = code;
	}

	public String getNumber() {
		return number;
	}

	public void setNumber(String number) {
		this.number = number;
	}
}
           

寫主方法進行測試:

public class Main {
	/**
	 * @kxm
	 */
	public static void main(String[] args) {
		XStream xstream = new XStream(new DomDriver());
		xstream.alias("person", Person.class);
		xstream.alias("phonenumber", PhoneNumber.class);
		Person joe = new Person("Joe", "Walnes");
		joe.setPhone(new PhoneNumber(123, "1234-456"));
		joe.setFax(new PhoneNumber(123, "9999-999"));
		String xml = xstream.toXML(joe);
		System.out.println(xml);

		Person newJoe = (Person) xstream.fromXML(xml);
		System.out.println(newJoe.getLastname());
	}
}
           

列印結果:

XML解析---利用XStream解析xml資料及反構造Java對象