XStream是个很强大的工具,能将java对象和xml之间相互转化。xstream不在意java类中成员变量是私有还是公有,也不在乎是否有默认构造函数。它调用方式也非常简单:从xml对象转化为java对象,使用fromXML()方法;从java对象序列化为xml,toXML()即可,很方便。xstream也支持注解方式,这些都是为了简化输出而设计,下面为大家简单说一下这几个注解的含义和用法。
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