XStream使用方法

前端之家收集整理的这篇文章主要介绍了XStream使用方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

猜你在找的XML相关文章