微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/xml/293612.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。