XStream可以完成xml文件和java对象之间的相互转换
从 http://xstream.codehaus.org/ 下载最新版本 1.3.1
使用时最小jar包只需要1个 , 就是xsteam.jar
--------------------------------------------------
XStream xsteam = new XStream();
new的时候是有选择性的 , 如果使用默认的话 , 需要添加jar包xpp3_min-1.1.4c.jar , 否则在将xml文件转换成对象时,会出现异常
不适用默认的话 ,不需要添加xpp3_min-1.1.4c.jar , 但是构造时需要添加参数
XStream xstream = new XStream(new DomDriver());
但是DomDriver的性能没有xpp3_min-1.1.4c.jar的性能好,我尝试1000次将一个xml文件转换为Teacher对象,使用xpp3_min-1.1.4c将近节省一半时间。
--------------------------------------------------
基本数据类型自动绑定。不用设置。
--------------------------------------------------
复合类型不使用alias绑定的话,生成的xml文件复合类型节点会有包名,看起来很不爽。 绑定的话就像这样,
xstream.alias("student" , Student.class); 绑定student节点 , 对应Student类
xstream.alias("teacher" , Teacher.class); 绑定teacher节点 , 对应Teacher类
--------------------------------------------------
xstream.alias("animal" , Animal.class , Cat.class);
xstream.alias("animal" , Cat.class);
上面的第一种和第二种的效果是相同的
--------------------------------------------------
stream.aliasAttribute(Teacher.class, "age", "teacherAge") 是绑定属性 , 对应的属性在相应xml节点头里,而不是在xml节点内部。
其中age是Teacher中的属性 , teacherAge是xml文件中显示的属性就是teacherAge='XXX' .
--------------------------------------------------
stream.aliasField("suishu" , Cat.class , "age");
生成xml文件的时候Cat类的age字段显示的是suishu , 而不是age
---------------------------------------------------
stream.addImplicitCollection(Teacher.class , "students" , "stu" , Student.class);
定义Teacher中的students集合绑定Student类 , 显示到xml文件中显示的是stu
---------------------------------------------------
我觉得上面的就够用了,毕竟只是一个工具 , 能办事就行。