XML,Object,Json分析转换Xstream采用
XML,Object,Json转换之浅析Xstream的使用
请尊重他人的劳动成果,转载请注明出处:XML,Object,Json转换之浅析Xstream的使用
XStream的是一个简单的库。主要用于Java对象和XML之间的转换。但XStream也内置了对Json的支持。
1.Xstream的特点:
这里直接引用Xstream官方的叙述:
灵活易用:在更高的层次上提供了简单、灵活、易用的统一接口,用户无需了解项目的底层细节
无需映射:大多数对象都能够在无需映射的情况下进行序列化与反序列化的操作
快速稳定:设计时力求达到的最重要的指标是解析速度快、占用内存少,以使之可以适用于大的对象处理或是对信息吞吐量要求高的系统
清晰易懂:项目採用reflection机制得到无冗余信息的XML文件。
所生成
的XML文件较本地Java序列化产物更简洁,格式更清晰。更便于用户阅读
无需改动:全然序列化包含private和final类型在内的所有内部字段。
支
持非公有类和内部类。类能够没有缺省的构造函数
易于集成:通过实现特定的接口,XStream能够直接与其他不论什么树型结构进行序列化与反序
列化操作(而不不过XML格式)
灵活转换:转换策略是能够定制的,同意用户自己定义特殊类型的对象怎样以XML格式存储。
错误处理:因为XML资料不合法而造成异常时。会提供具体地诊断信息帮助处理问题。
2.初始化XStream类
说Xstream简单是由于它提供统一入口。主要类XStream用作全部项目的入口点。它将重要组件集成在一起。提供更简单易用的API操作。
我们能够使用下面的语句进行初始化操作:
XStreamxstream = new XStream();
默认情况下。XStream会
採用Xpp3库,XPP3是一种执行效率很高的XML全解析实现。假设你不想依靠Xpp3库的话。也能够使用一个标准的JAXP
DOM解析器,能够採用下面语句进行初始化:
//不使用XPP3库
XStreamxstream = new XStream(new DomDriver());
此xstream实例。为线程安全的,能够供多个线程进行调用。共享使用。參考 com.thoughtworks.xstream.io.xml包,会发现系统提供了多种标识解析器供我们选择,包含,DomDriver、
JDomDriver、StaxDriver等等。
前面提到了Xstream提供了对Json的支持,是由于Xstream内置了两个Driver:
1.JsonHierarchicalStreamDriver:不依赖其它类库。仅仅实现
obj->JSON
2.JettisonMappedXmlDriver:依赖jettison类库,实现
JSON->obj or obj->JSON
两种Driver在处理同样设置的Object时会得到不同的JSON串,JsonHierarchicalStreamDriver得到的串更简洁,确如官网所说。
JsonHierarchicalStreamDriver有个小问题——默认输出带格式的JSON串,结构中带空格、换行,而且没有提供修饰方式。
3.经常用法:
xStream.toXML(object):将对象转换成XML、Json。
xStream.toXML(obj, outputStream):将对象转换XML、Json并封装成输出流。
xStream.toXML(object, writer):
将对象转换XML、Json并封成写入流。
xStream.fromXML():将XML、Json转换成对象,此方法接受File、InputStream、Reader、String、URL类型的參数。
xStream.alias("news",
News.class):为指定类名创建别名。
xStream.useAttributeFor(News.class,
"id"):将id设为
News的元素的属性。
xStream.aliasField("other",
BookShelf.class,"remark"):改动节点名称,将BookShelf类中的remark节点名改动为other。
xStream.addImplicitCollection(BookShelf.class,
"books"):去掉集体节点的父节点。
xStream.aliasAttribute("姓名",
"name"):改动属性的name。为姓名。
4.实例1:将对象转换成XML
/**
* 将对象转换成Xml格式的字符串
* @param object 要转换成Xml的对象
* @return String:Xml格式的字符串
*/
public static String convertObject2Xml(Object object) {
xStream=new XStream();
xStream.alias("news", News.class);//改动元素名称
xStream.useAttributeFor(News.class, "id");//将id设为News的元素的属性
return xStream.toXML(object);
}
5.实例2:将XML象转换成对象
/**
* 将成Xml格式的字符串转换成Java对象
* @param inputStream 要转换成Java对象的inputStream
* @return String:Xml格式的字符串
*/
public static Object convertXml2Object(InputStream inputStream) {
xStream=new XStream();
xStream.alias("news", News.class);//改动元素名称
xStream.useAttributeFor(News.class, "id");//将id设为News的元素的属性
return xStream.fromXML(inputStream);//此方法也可将xml转换成map
}
6.实例3:将对象转换成Json
/**
* 将对象转换成Json格式的字符串
* @param object 要转换成Json的对象
* @return String:Json格式的字符串
*/
public static String convertObject2Json(Object object) {
xStream = new XStream(newJsonHierarchicalStreamDriver() {
publicHierarchicalStreamWriter createWriter(Writer out) {
//删除根节点
return new JsonWriter(out, JsonWriter.DROP_ROOT_MODE);
}
});
return xStream.toXML(object);
}
版权声明:本文博主原创文章,博客,未经同意不得转载。
XML,Object,Json分析转换Xstream采用的更多相关文章
- json:JSONObject包的具体使用(JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包)
1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包. 2.下载jar包 http:// ...
- 个人永久性免费-Excel催化剂功能第90波-xml与json数据结构转换表格结构
在网络时代,大量的数据交互以xml和json格式提供,特别是系统间的数据交互和网络WebAPI.WebService接口的数据提供,都是通过结构化的xml或json提供给其他应用调用返回数据.若能提供 ...
- java下XML与JSON互相转换的Utils类
原文:http://heipark.iteye.com/blog/1394844 需要json-lib-2.1-jdk15.jar和xom-1.2.5.jar,maven pom.xml如下: < ...
- c#中 xml和json 互相转换
--xml转json XmlDocument doc = new XmlDocument(); doc.LoadXml(result); string json = Newtonsoft.Json.J ...
- C#中XML和json互相转换
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Xm ...
- XML与JSON的转换
-(void)test { //XML文本范例 NSString *testXMLString = @"Cake0.55RegularChocolateBluebe ...
- nodejs XML和json互相转换
Docs: https://www.npmjs.com/package/fast-xml-parser const xml = ` <user> <name>ajanuw< ...
- xStream完美转换XML、JSON
xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换: 前面有介绍过json-lib这个框架,在线博文:htt ...
- xStream完美转换XML、JSON(转)
xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换: 前面有介绍过json-lib这个框架,在线博文:htt ...
随机推荐
- Linux改动文件权限记录
1.从文件类型上分可分为三种, 用ls-l查询,以"一"开头的是文件,以字母"d"开头的是文件夹(俗称文件夹),以字母"l"开头的是连接. ...
- Windows 8 动手实验系列教程 实验8:Windows应用商店API
动手实验 实验 8: Windows应用商店API 2012年9月 简介 编写Windows应用商店应用最令人瞩目的理由之一是您可以方便地将它们发布到Windows应用商店.考虑到世界范围内目前有超过 ...
- Window7下安装openssl完整版(亲测实现)
安装环境: 操作系统:window7(64位) C++编译器:VS2010 -------------------------------------------------------------- ...
- Swift - 几种使用数组的数据存储模型
在iOS游戏开发中,比如2048游戏.有时会需要存储N×N数组的数据模型(如3×3,4×4等).这里我们演示了三种实现方式,分别是:一维数组.仿二维数组.自定义二维数组(即矩阵结构). 功能是根据传入 ...
- 用VC实现竖写汉字的方法
中国人自古就有自右至左.从上到下书写汉字的习惯.而当我们在自己所编写的应用程序中使用输出函数输出的总是自左至右的横排文字.有没有可能在我们的应用程序中实现竖写汉字的效果呢?笔者偶然发现了一种利用VC实 ...
- openCV之头文件分析
我们利用openCV开源库进行项目开发时,往往要牵涉到头文件的添加问题,而openCV中头文件众多,该如何选择呢?下面对openCV2.4.10的头文件进行一个简单的梳理,以便能够快速的添加对应的头文 ...
- Mysql ODBC 5.1 Driver免安装脚本
在使用Mysql 的时候,需要使用ODBC数据源的方式来连接mysql,所以常常需要用到免安装的驱动,自己参考官网的脚本, 修改了一个实用点的脚本,放出来大家一起分享: 安装mysql odbc 5. ...
- Java Web Services (1) - 第1章 Web服务快速入门
SCRIPTS_DIR=/Users/liuzhaofu/opus-dev/product/tools/devPRODUCT_DIR=/Users/liuzhaofu/opus-dev/product ...
- c coding style之学习篇
1. 使用do-while结构去避免潜在的内存泄漏问题. do { p1 = malloc(10); if (null == p1) { break; ...
- 利用jquery+iframe做一个ajax上传效果
以下是自学it网--中级班上课笔记 网址:www.zixue.it html页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict ...