- 浏览: 167299 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
小灯笼:
RabbitMQ实战:分布式消息队列高效部署及插件集群开发信息 ...
MQ(一) rabbitmq -
快乐的小六:
分布式消息队列高效部署及插件集群开发信息数据监控、分析实战(R ...
MQ(一) rabbitmq -
lgxjob:
spring schema -
h416373073:
博主写的用心,多谢分享
spring schema -
司马饮之:
顶一个
try catch finally 关闭流标准的写法
1 xStream框架
xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换;
官网:
http://xstream.codehaus.org/
2 about xtream
xtream 是一个简单的工具包,用来把对象序列化成xml配置文件,并且也可以把xml反序化成对象。
4Features 功能特点
简单易用,不需要配置映射,速度快并且占用内存小,生成的xml配置文件很干净,不带额外无用信息,这样在反映序列化的时候容易读取。不需要修改序列化对象的类型。支持类图。与xmlapi 整合。详细的返回错误信息。可修改的输出 显示。
4 点型应用
传输:网络传输
持久化:生成的XML可以写到文件,做持久化。
配置:XML最常用的配置文件。
单元测试
5局限
If using the enhanced mode, XStream can re-instantiate classes that do not have a default constructor. However, if using a different JVM like an old JRockit version, a JDK 1.3 or you have restrictions because of a SecurityManager, a default constructor is required.
The enhanced mode is also necessary to restore final fields for any JDK < 1.5. This implies deserialization of instances of an inner class.
Auto-detection of annotations may cause race conditions. Preprocessing annotations is safe though.
6准备一个pojo对象
7 bean 转成 xml
测试代码:
测试结果:
------------Bean->XML------------
<com.entity.Student>
<id>1</id>
<name>jack</name>
<email>jack@email.com</email>
<address>china</address>
<birthday>
<birthday>2010-11-22</birthday>
</birthday>
<registDate>2011-07-11 22:33:02.359 CST</registDate>
</com.entity.Student>
-----------类重命名后的XML------------
<student>
<id>1</id>
<name>jack</name>
<email>jack@email.com</email>
<address>china</address>
<生日>
<生日日期>2010-11-22</生日日期>
</生日>
<registDate>2011-07-11 22:33:02.390 CST</registDate>
</student>
-----------属性重命名后的XML------------
<com.entity.Student>
<id>1</id>
<name>jack</name>
<邮件>jack@email.com</邮件>
<address>china</address>
<birthday>
<birthday>2010-11-22</birthday>
</birthday>
<registDate>2011-07-11 22:33:02.406 CST</registDate>
</com.entity.Student>
-----------包重命名后的XML------------
<modile.Student>
<id>1</id>
<name>jack</name>
<email>jack@email.com</email>
<address>china</address>
<birthday>
<birthday>2010-11-22</birthday>
</birthday>
<registDate>2011-07-11 22:33:02.406 CST</registDate>
</modile.Student>
8 List 2 XML
结果:
------------Listg<Strudent>->XML------------
<list>
<com.entity.Student>
<id>1</id>
<name>jack</name>
<email>jack@email.com</email>
<address>china</address>
<birthday>
<birthday>2010-11-22</birthday>
</birthday>
<registDate>2011-07-11 22:47:08.0 CST</registDate>
</com.entity.Student>
<com.entity.Student>
<id>2</id>
<name>jack</name>
<email>jack@email.com</email>
<address>china</address>
<birthday>
<birthday>2010-11-22</birthday>
</birthday>
<registDate>2011-07-11 22:47:08.0 CST</registDate>
</com.entity.Student>
</list>
xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换;
官网:
http://xstream.codehaus.org/
2 about xtream
xtream 是一个简单的工具包,用来把对象序列化成xml配置文件,并且也可以把xml反序化成对象。
4Features 功能特点
简单易用,不需要配置映射,速度快并且占用内存小,生成的xml配置文件很干净,不带额外无用信息,这样在反映序列化的时候容易读取。不需要修改序列化对象的类型。支持类图。与xmlapi 整合。详细的返回错误信息。可修改的输出 显示。
4 点型应用
传输:网络传输
持久化:生成的XML可以写到文件,做持久化。
配置:XML最常用的配置文件。
单元测试
5局限
If using the enhanced mode, XStream can re-instantiate classes that do not have a default constructor. However, if using a different JVM like an old JRockit version, a JDK 1.3 or you have restrictions because of a SecurityManager, a default constructor is required.
The enhanced mode is also necessary to restore final fields for any JDK < 1.5. This implies deserialization of instances of an inner class.
Auto-detection of annotations may cause race conditions. Preprocessing annotations is safe though.
6准备一个pojo对象
package com.entity; import java.util.Date; public class Student { private int id; private String name; private String email; private String address; private Birthday birthday; private Date registDate; public Date getRegistDate() { return registDate; } public void setRegistDate(Date registDate) { this.registDate = registDate; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Birthday getBirthday() { return birthday; } public void setBirthday(Birthday birthday) { this.birthday = birthday; } // getter、setter public String toString() { return this.name + "#" + this.id + "#" + this.address + "#" + this.birthday + "#" + this.email; } }
7 bean 转成 xml
测试代码:
package com.test; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.Date; import org.junit.Before; import org.junit.Test; import com.entity.Birthday; import com.entity.Student; import com.thoughtworks.xstream.XStream; @SuppressWarnings("unchecked") public class XStreamTest { private XStream xstream = null; private ObjectOutputStream out = null; private ObjectInputStream in = null; private Student bean = null; @Before public void init() { try { xstream = new XStream(); bean = getTestStudent(); // xstream = new XStream(new DomDriver()); // 需要xpp3 jar } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { XStreamTest test = new XStreamTest(); test.init(); test.testWriteBean2XML_01(); } public final void fail(String string) { System.out.println(string); } public final void failRed(String string) { System.err.println(string); } /** * bean 2 XML * */ @Test public void testWriteBean2XML_01() { try { fail("------------Bean->XML------------"); fail(xstream.toXML(bean)); } catch (Exception e) { e.printStackTrace(); } } /** * 类重命名后的XML * */ @Test public void testWriteBean2XML_02() { try { fail("-----------类重命名后的XML------------"); // 类重命名 xstream.alias("student", Student.class); xstream.aliasField("生日", Student.class, "birthday"); xstream.aliasField("生日日期", Birthday.class, "birthday"); fail(xstream.toXML(bean)); } catch (Exception e) { e.printStackTrace(); } } /** * 类重命名后的XML * */ @Test public void testWriteBean2XML_03() { try { fail("-----------属性重命名后的XML------------"); // 属性重命名 xstream.aliasField("邮件", Student.class, "email"); fail(xstream.toXML(bean)); } catch (Exception e) { e.printStackTrace(); } } /** * 包重命名后的XML * */ @Test public void testWriteBean2XML_04() { try { fail("-----------包重命名后的XML------------"); //包重命名 xstream.aliasPackage("modile", "com.entity"); fail(xstream.toXML(bean)); } catch (Exception e) { e.printStackTrace(); } } /** * 构造数据 * */ private Student getTestStudent() { Student 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); bean.setRegistDate(new Date()); return bean; } }
测试结果:
------------Bean->XML------------
<com.entity.Student>
<id>1</id>
<name>jack</name>
<email>jack@email.com</email>
<address>china</address>
<birthday>
<birthday>2010-11-22</birthday>
</birthday>
<registDate>2011-07-11 22:33:02.359 CST</registDate>
</com.entity.Student>
-----------类重命名后的XML------------
<student>
<id>1</id>
<name>jack</name>
<email>jack@email.com</email>
<address>china</address>
<生日>
<生日日期>2010-11-22</生日日期>
</生日>
<registDate>2011-07-11 22:33:02.390 CST</registDate>
</student>
-----------属性重命名后的XML------------
<com.entity.Student>
<id>1</id>
<name>jack</name>
<邮件>jack@email.com</邮件>
<address>china</address>
<birthday>
<birthday>2010-11-22</birthday>
</birthday>
<registDate>2011-07-11 22:33:02.406 CST</registDate>
</com.entity.Student>
-----------包重命名后的XML------------
<modile.Student>
<id>1</id>
<name>jack</name>
<email>jack@email.com</email>
<address>china</address>
<birthday>
<birthday>2010-11-22</birthday>
</birthday>
<registDate>2011-07-11 22:33:02.406 CST</registDate>
</modile.Student>
8 List 2 XML
fail("------------Listg<Strudent>->XML------------"); List<Student> list = new ArrayList<Student>(); list.add(bean); Student s1 = getTestStudent(); s1.setId(2); list.add(s1); fail(xstream.toXML(list));
结果:
------------Listg<Strudent>->XML------------
<list>
<com.entity.Student>
<id>1</id>
<name>jack</name>
<email>jack@email.com</email>
<address>china</address>
<birthday>
<birthday>2010-11-22</birthday>
</birthday>
<registDate>2011-07-11 22:47:08.0 CST</registDate>
</com.entity.Student>
<com.entity.Student>
<id>2</id>
<name>jack</name>
<email>jack@email.com</email>
<address>china</address>
<birthday>
<birthday>2010-11-22</birthday>
</birthday>
<registDate>2011-07-11 22:47:08.0 CST</registDate>
</com.entity.Student>
</list>
发表评论
-
软件移植
2022-01-30 20:17 0此篇是工作随笔: 基础原理: 1、OS所处的 ... -
信号量与PV java
2018-01-02 15:11 1088进程间通信: 进程通常 ... -
http资料整理
2017-09-25 11:11 662http://blog.csdn.net/java199366 ... -
ACL权限管理
2017-09-19 10:56 2480ACL : access control list 访问权限管 ... -
Cookie 浅谈
2017-09-05 20:25 655随记Cookie 先看源码 /** * * ... -
JVM
2017-05-02 17:47 634http://blog.csdn.net/java199366 ... -
dubbo升级dubbox
2016-11-09 14:59 6040笔者公司部分应用用dubbo暴露服务,随着一些新人加盟,很多 ... -
spring 懒加载与dubbo 客户端校验
2016-09-19 18:41 2965Dubbo的启动时服务依赖检查是,对象实例化时,判断远程调用是 ... -
标识接口
2015-01-13 14:26 730摘要:标识接口是没有任何方法和属性的接口.它仅仅表明它的类属于 ... -
排序算法
2014-12-25 16:26 666package a; public class So ... -
java 序列化
2014-11-26 15:02 1069java序列化,是把对象序列化成流,转成流的目的是为了网络传输 ... -
java SPI
2014-11-19 17:30 657Java的SPI http://singleant.iteye ... -
JAR 文件包
2014-11-19 16:19 788JAR 文件就是 Java Archive File,顾名思意 ... -
hadoop
2014-10-15 17:09 1179hadoop官方网站: http://hadoop.apach ... -
JMX
2013-07-26 11:06 648http://docs.oracle.com/javase/7 ... -
分布式事务
2013-07-17 13:57 1755JTA 与 JTS 区别 一. 链 ... -
AJAX
2013-07-07 10:08 992一. AJAX 注意事项 (1)XHR不会修改浏览器历史栈,即 ... -
相等测试equals
2013-06-24 10:29 760Object类是Java中所有类的 ... -
随记小知识点
2013-06-21 10:44 8081. 字符串 从概念上讲,java字条串就是Unicode字符 ... -
Memcache
2013-02-16 17:36 747Memcache windows http://www.cn ...
相关推荐
【Xtream Path1.4汉化版】是一款专为Adobe Illustrator CS5设计的插件,它极大地扩展了软件的功能,特别是在路径编辑和图形创作方面提供了更多便捷的操作。这款插件经过汉化处理,使得中国用户能够更加方便地理解和...
ai插件 Xtream Path_汉化版
CValley Xtream Path是一款国外开发的超强大的Adobe Illustrator的路径编辑插件。使用Xtream Path可以实现很多对于路径的操作(拖曳,拉伸,推动等),当编辑路径时也不会受控制点的约束,允许把路径拖曳到任何地方,...
【标题】:“xtream使用” 在IT行业中,"xtream"通常指的是Xtream Code,这是一个流行的流媒体服务器管理系统,广泛应用于IPTV业务。它提供了管理频道、用户、播放列表以及实现计费功能的全面解决方案。这篇博客...
AI圆角插件 - CValley Xtream Path v1.6 for Adobe Illustrator - FOSI 相信大家和足迹一样,从Adobe CS6出世的那天就在等待同版本的圆角插件的面世,有的恐怕和足迹一样为了使用圆角插件而选择安装两个版本的ai,...
**Xtream_Path Illustrator插件详解** Xtream_Path是一款专为Adobe Illustrator设计的强大插件,它极大地扩展了Illustrator的基础功能,提升了设计师的工作效率。这款插件以其易用性和高效性深受用户喜爱,尤其在...
CValley Xtream Path是一款国外开发的超强大的Adobe Illustrator的路径编辑插件。使用Xtream Path可以实现很多对于路径的操作(拖曳,拉伸,推动等),当编辑路径时也不会受控制点的约束,允许把路径拖曳到任何地方,...
Xtream ToolKit 是一套强大的开发工具集合,主要用于提高软件开发者在编程过程中的效率和便捷性。这个工具包可能包含了多种组件和库,用于不同领域的应用开发,如UI设计、数据处理、网络通信等。在深入探讨Xtream ...
xtream path 1 5 for cs6亲测有效 里面有注册码 32位和64位的都有 安装方法不再赘述 功能非常强大的一个插件 还有插件使用说明书 绝对的极品珍惜资源 学AI必备
这时,第三方插件如“Xtream Path 1.3”就能发挥重要作用。 Xtream Path 1.3是一款专为Adobe Illustrator设计的圆角插件,经过汉化处理,更适合中国用户使用。它支持从Illustrator CS到CS5的多个版本,这意味着即使...
**CValley.Xtream.Path 插件详解** 在图形设计领域,Adobe Illustrator(简称AI)是一款被广泛使用的矢量图形编辑工具。然而,对于设计师来说,创建精确、流畅的圆弧并非总是那么简单。这时,CValley.Xtream.Path ...
在处理大量XML数据时,效率成为一个关键问题,这时就需要高效的解析库,如Xtream。Xtream是一个轻量级的Java库,它提供了一种流式API来读取和写入XML,使得解析和生成XML变得更加高效和简洁。 **Xtream解析XML的...
很好用的一个AI倒角插件,序列号在nfo文件中,
Now with Xtream Path, you can drag anywhere on a path without fiddling around with direction lines and control points. Boasting 36 useful tools, filters, and effects, it gives you the flexibility ...
好用的illustrator 路径编辑插件,支持cs4 解压后复制到Adobe Illustrator CS4\Plug-ins\Tools文件夹,运行ai后,点击该工具,会出现注册信息,复制,注册,OK
Jackson XTream是Jackson库的一个重要组成部分,主要用于处理XML数据流。Jackson是Java中广泛使用的JSON库,而XTream模块则提供了处理XML数据的强大工具。在本文中,我们将深入探讨Jackson XTream的应用,包括其核心...
在标题"xtream所有包"中,我们可以理解这是关于Xstream及其相关依赖包的集合。描述中的“可用的xstream的所有依赖包”表明了这个压缩包包含了运行Xstream所需的所有外部库。接下来,我们将详细探讨Xstream的核心功能...
Xtream Xtream是Java的开源复杂事件处理库。 如果您正在寻找仅用于提交一些查询的基于Java的cep,则有更好的选择(例如Esper),但是如果您需要一个简单易懂的CEP库来对其进行处理,扩展,使用它,尤其是用于研究流...
是一个很好的界面库,可以解决MFC界面不够完美的问题
xtream-codes-api-v2 最终公开的Xtream-Codes API V2官方正式文档,该文档在现已终止的xtream-codes.com论坛上发布原始网址: : 作者:BlackDream