`
xmong
  • 浏览: 264198 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

XStream小使用

阅读更多
XStream

目录
1 XSTREAM框架 1
1.1 XSTREAM的作用 1
1.2 XSTREAM的说明 1
2 XSTREAM的使用 1
2.1 JAVABEAN转换为XML 1
2.2 XML转换为JAVABEAN 1
2.3 JAVABEAN转化为JSON 1
2.4 JSON转化为JAVABEAN 1

1 XStream框架
1.1 XStream的作用
XStream是一个开源项目,它可以实现javaBean和xml,json之间进行轻松的转换。XStream支持将javaBean转换为xml,同时也支持将xml转换为javaBean,当然也可以将javaBean转换问json,也可以将json转换问javaBean。

1.2 XStream的说明
官网:http://xstream.codehaus.org/index.html
下载地址:http://xstream.codehaus.org/download.html
官方使用示例:http://xstream.codehaus.org/tutorial.html
打开下载地址,XStream提供了src(源码)和bin(二进制)包下载,如果想了解学习源代码可以下载src,如果只想使用就下载bin。下面简绍XStream的使用。

2 XStream的使用
下载XSteam的bin包,在java项目中加入下面包。



创建java项目,创建转换模型User和Bbirthday类,创建一个TestUser来作为测试转换类。
XStream的toXml()方法实现了javaBean到xml,json的转化,fromXml()方法实现了xml,json到javaBean的转换。
User类

package com.model;

import com.thoughtworks.xstream.annotations.XStreamAlias;

/**
 * @author xmong
 */
//annotation注解别名,即xml中的user节点名称
@XStreamAlias("user")
public class User {
	
	//姓名
	public String name;
	//生日
	public Birthday birthday;
	
	public User(){
		super();
	}
	
	public User(String name, Birthday birthday) {
		this.name = name;
		this.birthday = birthday;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Birthday getBirthday() {
		return birthday;
	}
	public void setBirthday(Birthday birthday) {
		this.birthday = birthday;
	}
		
	@Override
	public String toString() {
		return "{ name:"+this.name+"; birthday:"+this.birthday+"}";
	}

}

Birthday类

package com.model;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;

//annotation注解别名,即xml中的user节点名称
@XStreamAlias("birthday")
public class Birthday {
	
	//annotation注解属性,即xml中节点属性
	@XStreamAsAttribute
	int year;
	@XStreamAsAttribute
	int month;
	int day;
	
	public Birthday(){
		super();
	}
	
	public Birthday(int year, int month, int day) {
		this.year = year;
		this.month = month;
		this.day = day;
	}
	
	public int getYear() {
		return year;
	}
	public void setYear(int year) {
		this.year = year;
	}
	public int getMonth() {
		return month;
	}
	public void setMonth(int month) {
		this.month = month;
	}
	public int getDay() {
		return day;
	}
	public void setDay(int day) {
		this.day = day;
	}
	
	@Override
	public String toString() {
		return "{year:"+this.year+"; month"+this.month+"; day"+this.day+"}";
	}

}


2.1 JavaBean转化为XML

TestUser类

package com.model;

import com.thoughtworks.xstream.XStream;

/**
 * @author xmong
 */
public class TestUser {
	
	/**
	 * javaBean转换为xml
	 */
	public void test1(){
		
		//创建user对象
		User user = new User();
		user.setName("xmong");
		user.setBirthday(new Birthday(1990, 10, 20));
		
		//创建xstream
		XStream xstream = new XStream();
		//XStream xstream = new XStream(new DomDriver());
		//XStream xstream = new XStream(new StaxDriver());

		//加载annotation注解
		xstream.processAnnotations(User.class);
		
		System.out.println(xstream.toXML(user));
		
	}

       public static void main(String[] args) {
		TestUser tu = new TestUser();
		tu.test1();
	}
	
}


输出结果:
<user>
  <name>xmong</name>
  <birthday year="1990" month="10">
    <day>20</day>
  </birthday>
</user>


如果使用
XStream xstream = new XStream(new DomDriver())

创建XSteam对象那么输出的结果同上。
如果使用
XStream xstream = new XStream(new StaxDriver())

来创建XStream对象,输出的结果:
<?xml version="1.0" ?><user><name>xmong</name><birthday year="1990" month="10"><day>20</day></birthday></user>



2.2 XML转化为JavaBean

在TestUser的main方法调用test2方法
/**
	 * XML转换为JavaBean
	 */
	public void test2(){
		
		//创建user对象
		User user = new User();
		user.setName("xmong");
		user.setBirthday(new Birthday(1990, 10, 20));
		
		//创建xstream
		XStream xstream = new XStream();
		//加载annotation注解
		xstream.processAnnotations(User.class);
		
		String xml = xstream.toXML(user);
		
		System.out.println(xml);
		
		System.out.println("===================");
		
		System.out.println((User)xstream.fromXML(xml));
		
	}

	public static void main(String[] args) {
		TestUser tu = new TestUser();
		tu.test2();
	}



输出结果
<user>
  <name>xmong</name>
  <birthday year="1990" month="10">
    <day>20</day>
  </birthday>
</user>
===================
{ name:xmong; birthday:{year:1990; month10; day20}}


2.3 JavaBean转化为Json

/**
	 * javaBean转换为json
	 */
	public void test3(){
		
		//创建user对象
		User user = new User();
		user.setName("xmong");
		user.setBirthday(new Birthday(1990, 10, 20));
		
		//创建xstream,传入转换驱动类JettisonMappedXmlDriver
		XStream xstream = new XStream( new JettisonMappedXmlDriver());
		//设置user类的json别名
		xstream.alias("user", User.class);
		
		System.out.println(xstream.toXML(user));
		
	}


	public static void main(String[] args) {
		TestUser tu = new TestUser();
		tu.test3();
	}



输出结果
{"user":{"name":"xmong","birthday":{"year":1990,"month":10,"day":20}}}


/**
	 * javaBean转换为json
	 */
	public void test4(){
		
		//创建user对象
		User user = new User();
		user.setName("xmong");
		user.setBirthday(new Birthday(1990, 10, 20));
		
		//创建xstream,传入转换驱动类JsonHierarchicalStreamDriver
		XStream xstream = new XStream( new JsonHierarchicalStreamDriver());
		/*//去除根节点
		XStream xstream = new XStream(new JsonHierarchicalStreamDriver() {
		    public HierarchicalStreamWriter createWriter(Writer writer) {
		        return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE);
		    }
		});
		*/

		//设置user类的json别名
		xstream.alias("user", User.class);
		
		System.out.println(xstream.toXML(user));
		
	}

	public static void main(String[] args) {
		TestUser tu = new TestUser();
		tu.test4();
	}


输出结果

{"user": {
  "name": "xmong",
  "birthday": {
    "year": 1990,
    "month": 10,
    "day": 20
  }
}}

如果使用
XStream xstream = new XStream(new JsonHierarchicalStreamDriver() {
		    public HierarchicalStreamWriter createWriter(Writer writer) {
		        return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE);
		    }
		});

创建XStream对象,那么java对象转换成的json会去除根节点。
输出结果
{
  "name": "xmong",
  "birthday": {
    "year": 1990,
    "month": 10,
    "day": 20
  }
}



2.4 Json转化为JavaBean

/**
	 * json转换为javaBean
	 */
	public void test5(){
		
		//创建user对象
		User user = new User();
		user.setName("xmong");
		user.setBirthday(new Birthday(1990, 10, 20));
		
		//创建xstream,传入转换驱动类JettisonMappedXmlDriver
		XStream xstream = new XStream( new JettisonMappedXmlDriver());
		//设置user类的json别名
		xstream.alias("user", User.class);
		
		String json = xstream.toXML(user);
		
		System.out.println(json);
		System.out.println("================");
		System.out.println(xstream.fromXML(json));
		
	}
	
	public static void main(String[] args) {
		TestUser tu = new TestUser();
		tu.test5();
	}


输出结果
{"user":{"name":"xmong","birthday":{"year":1990,"month":10,"day":20}}}
================
{ name:xmong; birthday:{year:1990; month10; day20}}





  • 大小: 2.5 KB
分享到:
评论

相关推荐

    Xstream使用说明

    ### Xstream使用说明 #### 一、Xstream简介 Xstream是一种对象XML映射(Object/XML Mapping)技术,主要用于处理XML文件序列化的工作。通过Xstream可以轻松地将Java对象序列化为XML文档,或者将XML文档反序列化为...

    XStream使用文档 wd.docx

    以下是一个简单的示例,展示了如何创建 `XStream` 实例并使用它来将 `Person` 对象转换为 XML: ```java import com.thoughtworks.xstream.XStream; public class Main { public static void main(String[] args)...

    xstream使用案例

    2. **初始化 XStream**: 创建 `XStream` 实例,通常建议使用 `XStream(xmlDriver)` 初始化,其中 `xmlDriver` 可以是 `JDOMDriver` 或 `DomDriver` 等。 3. **注册转换器**: 如果需要处理自定义类型,可能需要注册...

    XStream小例子

    这个小例子将帮助我们理解XStream的工作原理及其基本用法。 首先,我们需要了解XStream的核心概念:对象到XML的映射。在XStream中,这个过程通过创建一个`XStream`实例并调用其`toXML()`方法来实现。同样,从XML反...

    XStream开发使用的包

    XStream开发时使用的包,官网原句:XStream is a simple library to serialize objects to XML and back again. 要使对象转化成xml,使用: XStream xstream = new XStream(); String str = xtream.toXML(Object); ...

    xstream使用小记

    《Xstream使用小记》 Xstream是一款Java库,它提供了简单且强大的方式来序列化和反序列化Java对象到XML,以及从XML回转换为Java对象。在本文中,我们将深入探讨Xstream的核心概念、使用场景以及如何通过实例进行...

    使用XStream操作xml教程

    本教程将深入探讨如何使用XStream进行XML操作。 一、XStream简介 XStream是一个开源库,由Johannes Link开发,它允许开发者以一种声明性方式将Java对象序列化为XML,然后又可以从XML还原回对象。XStream的核心理念...

    xml解析及使用XStream实现javaBean与xml之间的转换

    本篇将详细讲解XML的解析方式及其在Java中的应用,特别是如何使用XStream库进行JavaBean与XML之间的互转。 1. **XML解析方式** - DOM解析:Document Object Model,它一次性加载整个XML文档到内存,形成一棵树形...

    XStream使用例子

    在本文中,我们将深入探讨XStream的使用方法,包括它的核心概念、配置、安全性和性能优化。 **1. 序列化到XML** XStream的核心功能是能够将Java对象转换成XML。首先,我们需要导入XStream库,并创建一个XStream...

    XStream Java下的使用

    **XStream Java下的使用** XStream 是一个Java库,它能够将Java对象转换为XML,同时也能将XML数据转换回相应的Java对象。这个强大的库在处理XML序列化和反序列化时提供了简单而直观的API,尤其适用于Android开发中...

    XStream使用文档.docx

    XStream使用文档 XStream是一个轻量级的、简单易用的开放源代码Java库,用于将Java对象序列化为XML或者再转换回来。XStream还能将Java对象转成其它格式,比如JSon。官方上的XStream特点包括使用简单、不需要配置...

    XStream使用文档

    该文件是XStream官方使用文档,有效帮助程序员解决xml技术问题

    最齐全的xstream1.4.8.jar

    最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar ...

    使用XStream 多集合生成xml

    在这个场景中,"使用XStream多集合生成xml"是一个关键的技术点,它涉及到如何将多个集合类的对象转换成XML文档。以下是对这一主题的详细说明。 首先,我们需要了解XStream的基本用法。XStream的核心是`XStream`类,...

    xstream-1.4.15.jar

    XStream 反序列化漏洞(CVE-2020-26258 & 26259),修复jar包 xstream-1.4.15.jar Xstream 是 Java 类库,用来将对象序列化成 XML (JSON) 或反序列化为对象。XStream 是一款开源软件,允许在 BSD 许可证的许可下分发...

    xstream-1.4.2.jar

    XStream-1.4.2可能是一个稳定且广泛使用的版本,对于那些需要处理XML与Java对象之间转换的项目来说,它是一个可靠的选择。 标签"xstream.jar"明确了这是一个Java档案(JAR)文件,通常包含Java类、资源和其他相关...

    xstream相关的jar包

    XStream使用DOM4J作为其默认的DOM提供商,用于解析和构建XML文档。 3. **xpp3_min-1.1.4c.jar**:这是一个小型的XML Pull解析器(XPP3),用于在内存效率和性能方面提供轻量级的XML解析。XStream可以使用XPP3来解析...

    xstream解析依赖包

    本文将深入探讨XStream的使用以及其依赖包xpp3_min-1.1.4c.jar和xstream-1.3.1.jar的相关知识点。 首先,我们来了解核心组件xstream-1.3.1.jar。XStream的核心功能是提供了一种直观的方式来将Java对象转换为XML,并...

    xstream最新版 - xstream-1.4.18.jar

    xstream最新版jar包

    com.thoughtworks.xstream.XStream操作XML和java对象的一些用法

    在Java开发中,数据交换和持久化经常涉及到XML与Java对象之间的转换。XStream库提供了一个简单、直观的方式来实现这种转换,...通过熟练掌握XStream的使用,开发者可以更好地在Java应用中利用XML进行数据交换和存储。

Global site tag (gtag.js) - Google Analytics