近来项目中需要实现javabean与xml文件的互转,一个同事发现了xstream不错。简洁易用,不错的开源组件,在这里推荐一下。并附上使用示例与jar包作为笔记。有需要的同学可以学学。
1.Person javabean类
public class Person {
private String firstname;
private String lastname;
private PhoneNumber phone;
private PhoneNumber fax;
public Person() {
super();
}
public Person(String firstname, String lastname) {
super();
this.firstname = firstname;
this.lastname = lastname;
}
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;
}
@Override
public String toString() {
return "Person [firstname=" + firstname + ", lastname=" + lastname
+ ", phone=" + phone + ", fax=" + fax + "]";
}
}
2.PhoneNumber javabean类
public class PhoneNumber {
private int code;
private String number;
public PhoneNumber() {
super();
}
public PhoneNumber(int code, String number) {
super();
this.code = code;
this.number = number;
}
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;
}
@Override
public String toString() {
return "PhoneNumber [ code =" + code + ", number=" + number + "]";
}
3.转换测试类
import org.junit.Test;
import com.thoughtworks.xstream.XStream;
public class ConvertTest {
/**
* 将Person转换成xml字符串
*/
@Test
public void personToXML() {
XStream xstream = new XStream();
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>
<firstname>Joe</firstname>
<lastname>Walnes</lastname>
<phone>
<code>123</code>
<number>1234-456</number>
</phone>
<fax>
<code>123</code>
<number>9999-999</number>
</fax>
</person>
*/
/**
* 将xml字符串转换成Person
*/
@Test
public void xmlToPerson() {
String site = "CAN";
XStream xstream = new XStream();
xstream.alias("person", Person.class);
xstream.alias("phonenumber", PhoneNumber.class);
String xml = "<person><firstname>Joe</firstname><lastname>Walnes</lastname><phone><code>123</code><number>1234-456</number></phone><fax><code>123</code><number>9999-999</number></fax></person>";
xstream.omitField(Person.class, site);
Person newJoe = (Person) xstream.fromXML(xml);
System.out.println(newJoe.toString());
}
//输出结果
//Person [firstname=Joe, lastname=Walnes, phone=PhoneNumber [ code = 123, number=1234-456],
// fax=PhoneNumber [ code =123, number=9999-999]]
}
官网:http://xstream.codehaus.org/tutorial.html
参考网址:http://www.cnblogs.com/hoojo/archive/2011/04/22/2025197.html