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