日期:2014-05-16  浏览次数:20353 次

xStream完美转换XML、JSON xStream框架
xStream完美转换XML、JSON
xStream框架

xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换;

前面有介绍过json-lib这个框架,在线博文:http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.html

以及Jackson这个框架,在线博文:http://www.cnblogs.com/hoojo/archive/2011/04/22/2024628.html

它们都完美支持JSON,但是对xml的支持还不是很好。一定程度上限制了对Java对象的描述,不能让xml完全体现到对Java对象的描述。这里将会介绍xStream对JSON、XML的完美支持。xStream不仅对XML的转换非常友好,而且提供annotation注解,可以在JavaBean中完成对xml节点、属性的描述。以及对JSON也支持,只需要提供相关的JSONDriver就可以完成转换。

一、准备工作

1、 下载jar包、及官方资源

xStream的jar下载地址:

https://nexus.codehaus.org/content/repositories/releases/com/thoughtworks/xstream/xstream-distribution/1.3.1/xstream-distribution-1.3.1-bin.zip

官方的示例很全,官方参考示例:http://xstream.codehaus.org/tutorial.html

添加xstream-1.3.1.jar文件到工程中,就可以开始下面的工作;需要的jar如下:



2、 测试用例代码

package com.hoo.test; import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.StringReader;import java.io.Writer;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import org.codehaus.jettison.json.JSONException;import org.junit.After;import org.junit.Before;import org.junit.Test;import com.hoo.entity.Birthday;import com.hoo.entity.Classes;import com.hoo.entity.ListBean;import com.hoo.entity.Student;import com.thoughtworks.xstream.XStream;import com.thoughtworks.xstream.io.HierarchicalStreamWriter;import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;import com.thoughtworks.xstream.io.json.JsonHierarchicalStreamDriver;import com.thoughtworks.xstream.io.json.JsonWriter; /** * <b>function:</b>Java对象和XML字符串的相互转换 * jar-lib-version: xstream-1.3.1 * @author hoojo * @createDate Nov 27, 2010 12:15:15 PM * @file XStreamTest.java * @package com.hoo.test * @project WebHttpUtils * @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_@126.com * @version 1.0 */@SuppressWarnings("unchecked")public class XStreamTest {        private XStream xstream = null;    private ObjectOutputStream  out = null;    private ObjectInputStream in = null;        private Student bean = null;        /**     * <b>function:</b>初始化资源准备     * @author hoojo     * @createDate Nov 27, 2010 12:16:28 PM     */    @Before    public void init() {        try {            xstream = new XStream();            //xstream = new XStream(new DomDriver()); // 需要xpp3 jar        } catch (Exception e) {            e.printStackTrace();        }        bean = new Student();        bean.setAddress("china");        bean.setEmail("jack@email.com");        bean.setId(1);        bean.setName("jack");        Birthday day = new Birthday();        day.setBirthday("2010-11-22");        bean.setBirthday(day);    }        /**     * <b>function:</b>释放对象资源     * @author hoojo     * @createDate Nov 27, 2010 12:16:38 PM     */    @After