XStream是个很强大的工具,能将java对象和xml之间相互转化。xstream不在意java类中成员变量是私有还是公有,也不在乎是否有默认构造函数。它调用方式也非常简单:从xml对象转化为java对象,使用fromXML()方法;从java对象序列化为xml,toXML()即可,很方便。xstream也支持注解方式,这些都是为了简化输出而设计,下面为大家简单说一下这几个注解的含义和用法。
@XStreamAlias("cat")
public class Cat {
//名字
private String name;
//大小
@XStreamAlias("catAge")
private Integer age;
//玩具球 球具有颜色属性
//@XStreamImplicit 去除<Balls></Balls>显示
private List<Ball> balls;
Cat(String name,Integer age,List<Ball> balls){
this.name = name;
this.age = age;
this.balls=balls;
}
}
Ball
@XStreamAlias("ball")
public class Ball {
private String color;
Ball(String color){
this.color = color;
}
}
测试类
public class XmlUtil {
private static final String ROOT_ELEMENT = "data_content";
public static Object dataToObject(String dataContext, String dataType, Class clazz) {
if ("xml".equals(dataType)) {
return xmlToObject(dataContext, clazz);
} else if ("json".equals(dataType)) {
return jsonToObject(dataContext, clazz);
}
return null;
}
private static Object jsonToObject(String dataContent, Class clazz) {
return JSONObject.toJavaObject(JSON.parseObject(dataContent), clazz);
}
private static Object xmlToObject(String dataContext, Class clazz) {
String className = clazz.getSimpleName();
XStream xstream = new XStream();
//报文的根元素替换为需要转化的java对象类名
dataContext = dataContext.replace(ROOT_ELEMENT, className);
xstream.alias(className, clazz);
return xstream.fromXML(dataContext);
}
public static void main(String[] args) {
try {
//初始化cat
List<Ball> balls = new ArrayList<Ball>();
balls.add(new Ball("red"));
Cat cat = new Cat("馄饨", 1, balls);
//初始化结束
//为了方便查找 将文件制定到D盘cat.xml中
FileOutputStream fos = new FileOutputStream("D:/cat.xml");
XStream xstream = new XStream(new XppDriver(new XmlFriendlyNameCoder("_-", "_")));
xstream.processAnnotations(Cat.class);//将Cat.class类上的注解将会使用
xstream.toXML(cat, fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
其中的一种情形下的数据输出
<cat>
<name>馄饨</name>
<catAge>1</catAge>
<balls>
<ball>
<color>red</color>
</ball>
</balls>
</cat>
转载:http://blog.csdn.net/robert_mm/article/details/8459879