需求:如何实现Java对象与XML之间的快速互转?
要实现这个需求,解决方法太多了,今天为大家展示的是XStream,可能很多朋友已经知道这个工具。
下面来看看XStream如何使用。
第一步导包:这个是使用Maven的方式引入包,很方便,不用经常去找jar包和考虑这个jar包有哪些依赖,所以也推荐大家在开发的时候尽可能的使用Maven。
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.9</version>
</dependency>
第二步创建源对象(就是需要被转换成XML的对象),为了展示可以生产多级的结构,我这里新建两个实体类。
public class Person {
private String name;
private String address;
private int age;
private Developer developer;
public Person() {
}
public Person(String name, String address, int age) {
this.name = name;
this.address = address;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Developer getDeveloper() {
return developer;
}
public void setDeveloper(Developer developer) {
this.developer = developer;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", address='" + address + '\'' +
", age=" + age +
", developer=" + developer +
'}';
}
}
public class Developer extends Person{
private int score;
private int rank;
public Developer() {
}
public Developer(int score, int rank) {
this.score = score;
this.rank = rank;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
@Override
public String toString() {
return "Developer{" +
"score=" + score +
", rank=" + rank +
'}';
}
}
第三步实现Java对象与XML的互转:
/**
* 功能描述:Java对象转换成XML字符串
* @param object 被转换成xml的源对象
* @return
*/
public static String objectToXml(Object object){
XStream xStream = new XStream();
xStream.alias("person",Object.class);
return xStream.toXML(object);
}
/**
* 功能描述:XML字符串转换成Java对象
* @param xml 被解析的xml字符串
* @param object 解析的目标对象
* @return
*/
public static Object xmlToObject(String xml,Object object){
XStream xStream = new XStream();
xStream.alias("object",Object.class);
return xStream.fromXML(xml);
}
第四步测试:
public static void main(String[] args) {
Person person = new Person("就是爱体验","广东深圳",24);
Developer developer = new Developer(100,0);
person.setDeveloper(developer);
String xml = objectToXml(person);
System.out.println("objectToXml:"+xml);
System.out.println("===============================");
Person person1 = new Person();
Person personobject = (Person) xmlToObject(xml,person1);
System.out.println("xmlToObject:"+personobject);
}
测试结果:
当然,由于时间有限,这里只是一些简单的使用的讲解,如果想了解更多的使用方式,可以去官网更深一步的学习。