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使用例子,如何序列化、反序列化到XML和JSON格式。
XStream小例子
Xstream使用说明 各种使用案例
XStream Java Android下的使用.有读写相关的测试.
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官方使用文档,有效帮助程序员解决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 ...
xstream xml java对象转换,直接导入使用即可看到效果
XStream 反序列化漏洞(CVE-2020-26258 & 26259),修复jar包 xstream-1.4.15.jar Xstream 是 Java 类库,用来将对象序列化成 XML (JSON) 或反序列化为对象。XStream 是一款开源软件,允许在 BSD 许可证的许可下分发...
xstream最新版jar包
使用xstream来读取xml文件的demo,该demo中,使用了支付宝对账单返回的xml为列子来展示使用xstream的注解的方式读取xml,并且转成实体类.学习xstream或者对xstream有疑问的可以参考下..之所以使用支付宝账单返回的xml是...
赠送jar包:xstream-1.4.11.jar; 赠送原API文档:xstream-1.4.11-javadoc.jar; 赠送源代码:xstream-1.4.11-sources.jar; 赠送Maven依赖信息文件:xstream-1.4.11.pom; 包含翻译后的API文档:xstream-1.4.11-...
XStream使用文档
XStream是以个实现序列化数据和xml之间相互转换的类库,使用非常简单、方便
XStream在运行时使用Java反射机制对要进行序列化的对象树的结构进行探索,并不需要对对象作出修改。XStream可以序列化内部字段,包括私private和final字段,并且支持非公开类以及内部类。 在缺省情况下,XStream不...
xstream-1.4.19.jar
xStream xml to bean,使用xStream 互转 xml 、bean. 的一个工具类。
一个小demo展示xml的两种解析方式和四种解析方法,以及使用XStream进行javaBean与xml、json之间的转换
多个类注解@XStreamAlias,value相同、且在集合上使用了@XStreamImplicit会出现异常: com.thoughtworks.xstream.converters.ConversionException: No field 'null' found in class '.....(注解的类路径)' ---- ...
xstream jar包,java对象转xml以及xml转java对象,操作很简单。