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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值