xtream用于javabean和.xml文件之间的序列化与反序列化操作。下面是我自己做的相关练习,我把代码贴出来以供分享。
定义了三个类:Classes 班级类
Student 学生类
MapBean 用于单独测试map转成xml之后的xiaoguo
public class Classes {
public Classes() {
// TODO Auto-generated constructor stub
}
private String className;
private List<Student> students;
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
@Override
public String toString() {
System.out.println(className);
return className;
}
}
public class Student {
private String name;
private Integer age;
public Student() { }
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
public class MapBean {
public MapBean() {
// TODO Auto-generated constructor stub
}
private Map<String, String> servlet;
private Map<String,String> mapping;
public Map<String, String> getServlet() {
return servlet;
}
public void setServlet(Map<String, String> servlet) {
this.servlet = servlet;
}
public Map<String, String> getMapping() {
return mapping;
}
public void setMapping(Map<String, String> mapping) {
this.mapping = mapping;
}
}
/**
* 测试X-Stream的使用
* @author 杨承
*
*/
public class MainClass {
public static void main(String[] args){
mapToXml();
}
public static void objToXml(){
XStream xStream=new XStream(new DomDriver());
xStream.alias("student", Student.class);
xStream.alias("Classes", Classes.class);
Student stu=new Student();
Student stu2=new Student();
stu.setName("校花");
stu.setAge(23);
stu2.setName("校草");
stu2.setAge(23);
Classes classes=new Classes();
List<Student> list=new ArrayList<>();
list.add(stu);
list.add(stu2);
classes.setClassName("班级一");
classes.setStudents(list);
System.out.println(xStream.toXML(classes));
}
public static void xmlToObj(){
XStream xStream=new XStream(new DomDriver());
xStream.alias("student", Student.class);
xStream.alias("Classes", Classes.class);
Classes classes=new Classes();
//文件存放在项目的根目录下
xStream.fromXML(new File("Classes.xml"), classes);
classes.toString();
}
public static void mapToXml(){
XStream xStream=new XStream(new DomDriver());
xStream.alias("root", MapBean.class);
Map<String, String> urlToName=new HashMap<>();
urlToName.put("/login", "login");
urlToName.put("/log", "login");
urlToName.put("/reg", "reg");
Map<String, String> nameToObj=new HashMap<>();
nameToObj.put("login", "httpServer.demo3.LoginServlet");
nameToObj.put("reg", "httpServer.demo3.RegistServlet");
MapBean bean=new MapBean();
bean.setMapping(urlToName);
bean.setServlet(nameToObj);
System.out.println(xStream.toXML(bean));
}
}
objToXml()的执行结果:
<Classes>
<className>班级一</className>
<students>
<student>
<name>校花</name>
<age>23</age>
</student>
<student>
<name>校草</name>
<age>23</age>
</student>
</students>
</Classes>
xmlToObj();执行结果:班级一(证明xml中的数据被封装到了);
mapToXml();执行结果
<root>
<servlet>
<entry>
<string>reg</string>
<string>httpServer.demo3.RegistServlet</string>
</entry>
<entry>
<string>login</string>
<string>httpServer.demo3.LoginServlet</string>
</entry>
</servlet>
<mapping>
<entry>
<string>/login</string>
<string>login</string>
</entry>
<entry>
<string>/log</string>
<string>login</string>
</entry>
<entry>
<string>/reg</string>
<string>reg</string>
</entry>
</mapping>
</root>
相关jar包下载地址:http://download.youkuaiyun.com/download/sinat_28771747/10268548