利用xstream可以方便的进行java对象和xml之间互相转化。代码如下
1、java对象
import com.thoughtworks.xstream.annotations.XStreamAlias;
@XStreamAlias("PERSON")
public class Person {
@XStreamAlias("name")
String name;
@XStreamAlias("age")
String age;
@XStreamAlias("job")
String job;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
}
其中,类名和属性名用xstream注解来标注,这种方式是通过注解形式来建立java对象属性和xml中节点的映射关系。方便后边代码的书写,不必要每个属性都写一遍alias,着实麻烦。
2、XMLConverter,具体实现xml与java对象转换的类
import com.thoughtworks.xstream.XStream;
public class XMLConverter {
/**
* 由XML生成java对象
*
* @param <T>
* @param xml
* @param c
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T fromXML(String xml, Class<T> c) {
T ret = null;
XStream xs = new XStream();
xs.processAnnotations(c);
ret = (T) xs.fromXML(xml);
return ret;
}
/**
* 由java对象生成XML
*
* @param <T>
* @param t
* @return
*/
public static <T> String toXML(T t) {
String xmlStr = null;
XStream xs = new XStream();
xs.processAnnotations(t.getClass());
xmlStr = xs.toXML(t);
return xmlStr;
}
}
3、测试类
import nju.software.dataexchange.xml.XMLConverter.XMLConverter;
public class TestXstream {
public static void main(String[] args) throws Exception {
//以下是xml转换为person对象
String message = "<PERSON>" + " <name>李明</name>" + " <age>27</age>"
+ " <job>软件工程师</job>" + "</PERSON>";
Person person = XMLConverter.fromXML(message, new Person().getClass());
//打印生产的person对象的属性
System.out.println(person.getName());
System.out.println(person.getAge());
System.out.println(person.getJob());
//以下是person对象转换为xml
String xml_string = XMLConverter.toXML(person);
System.out.println("以下是由person对象生成的xml:");
System.out.println(xml_string);
}
}