- 浏览: 139570 次
- 性别:
- 来自: 北京
文章分类
创建能够序列化的类
这是一组简单的类。XStream能把这些类的实例转换到XML或是转换回来。
public class Person {
private String firstName;
private String lastName;
private PhoneNumber phonex;
private PhoneNumber fax;
//构造函数或是其他方法
}
public class PhoneNumber {
private int code;
private int number;
//构造函数或是其他方法
}
注:注意到这些都是私有变量。XStream不关心变量的作用域。不需要getter或是setter方法。并且,XStream不限定需要默认的构造函数。
实例化XStream
使用XStream,简单实例化XStream类:
XStream xStream = new XStream();
你需要xstream-[version].jar and xpp3-[version].jar在classpath中。XPP3是一个非常快的XML拉式转换器工具。如果你不想包含这个依赖,你可以使用标准的JAXP DOM转换器来代替。
XStream xStream = new XStream(new DomDriver());//不需要XPP3库
注:这个类的简单设计是为了实现通用操作的。为了实现更复杂的操作你可以选择自己创建出不同方式。
现在,为了使用XStream来更精简的输出XML,你可以为自定义的类创建别名到XML的元素名的映射。这是使用XStream唯一需要的映射的,甚至这个都是可选的。
xStream.alians("person",Person.class);
注:这是可选的一步。没有这步XStream也可以很好的起作用,但是XML元素的名字就会包含每个类的全称(包括包名),这将会使生成XML稍大。
序列号一个对象到XML
让我们创建一个Person的实例并且填充它的变量域:
Person joe = new Person("Joe","Walnes");
joe.setPhone(new PhoneNumber(123,"1234-456"));
joe.setFax(new PhoneNumber(123,"9999-999"));
现在转换到XML,你要做的是简单的调用XStream:
String xml = xstream.toXML(joe);
生成的XML看上去像这样:
<person>
<firstname>Joe</firstname>
<lastname>Walnes</lastname>
<phone>
<code>123</code>
<number>1234-456</number>
</phone>
<fax>
<code>123</code>
<number>9999-999</number>
</fax>
</person>
非常简单,像创建XML一样。
从XML反序列化一个对象
从XML重新构造一个对象:
Person newJoe = (Person)xStream.fromXML(xml);
XStream是多么的简单啊!
总结:
使用xStream.alias(String elementName, Class cls)为任何一个自定义类创建到类到元素的别名;
使用xStream.toXML(Object obj)转换对象到XML;
使用xStream.fromXML(String xml)转换XML到对象;
时间转换
<PromoId xsi:nil=\"true\" />转为int 报String 不能转为int错误
这是一组简单的类。XStream能把这些类的实例转换到XML或是转换回来。
public class Person {
private String firstName;
private String lastName;
private PhoneNumber phonex;
private PhoneNumber fax;
//构造函数或是其他方法
}
public class PhoneNumber {
private int code;
private int number;
//构造函数或是其他方法
}
注:注意到这些都是私有变量。XStream不关心变量的作用域。不需要getter或是setter方法。并且,XStream不限定需要默认的构造函数。
实例化XStream
使用XStream,简单实例化XStream类:
XStream xStream = new XStream();
你需要xstream-[version].jar and xpp3-[version].jar在classpath中。XPP3是一个非常快的XML拉式转换器工具。如果你不想包含这个依赖,你可以使用标准的JAXP DOM转换器来代替。
XStream xStream = new XStream(new DomDriver());//不需要XPP3库
注:这个类的简单设计是为了实现通用操作的。为了实现更复杂的操作你可以选择自己创建出不同方式。
现在,为了使用XStream来更精简的输出XML,你可以为自定义的类创建别名到XML的元素名的映射。这是使用XStream唯一需要的映射的,甚至这个都是可选的。
xStream.alians("person",Person.class);
注:这是可选的一步。没有这步XStream也可以很好的起作用,但是XML元素的名字就会包含每个类的全称(包括包名),这将会使生成XML稍大。
序列号一个对象到XML
让我们创建一个Person的实例并且填充它的变量域:
Person joe = new Person("Joe","Walnes");
joe.setPhone(new PhoneNumber(123,"1234-456"));
joe.setFax(new PhoneNumber(123,"9999-999"));
现在转换到XML,你要做的是简单的调用XStream:
String xml = xstream.toXML(joe);
生成的XML看上去像这样:
<person>
<firstname>Joe</firstname>
<lastname>Walnes</lastname>
<phone>
<code>123</code>
<number>1234-456</number>
</phone>
<fax>
<code>123</code>
<number>9999-999</number>
</fax>
</person>
非常简单,像创建XML一样。
从XML反序列化一个对象
从XML重新构造一个对象:
Person newJoe = (Person)xStream.fromXML(xml);
XStream是多么的简单啊!
总结:
使用xStream.alias(String elementName, Class cls)为任何一个自定义类创建到类到元素的别名;
使用xStream.toXML(Object obj)转换对象到XML;
使用xStream.fromXML(String xml)转换XML到对象;
时间转换
private CouponMessage convertSubscribeMessage(String xml){ return (CouponMessage)xStream.fromXML(xml); } private static XStream xStream = new XStream(); static { xStream.registerConverter(new SingleValueConverter() { public Object fromString(String str) { return DateUtil.createDate(str.replaceAll("T", " "), DateUtil.YYYYMMDD_HHMMSS); } public String toString(Object obj) { return DateUtil.format((Date) obj, DateUtil.YYYYMMDD_HHMMSS); } public boolean canConvert(Class type) { return Date.class.equals(type); } }); }
<PromoId xsi:nil=\"true\" />转为int 报String 不能转为int错误
xStream.registerConverter(new IntConverter(){ public boolean canConvert(Class type) { return type.equals(int.class) || type.equals(Integer.class); } public Object fromString(String str) { if("".equals(str)||str==null){ return Integer.valueOf(0); } else{ long value = Long.decode(str).longValue(); if(value < Integer.MIN_VALUE || value > 0xFFFFFFFFl) { return Integer.valueOf(0); } return new Integer((int)value); } } });
发表评论
-
storm 安装
2013-09-02 16:32 3067------------------------------- ... -
动态代理性能比较
2013-01-18 17:02 1155转自http://javatar.iteye.com/blog ... -
java 类加载器学习
2012-12-14 10:47 1033引用1.自定义类加载器 public interface ... -
jackson 学习
2012-11-13 15:42 10031.json 转为object对象 public clas ... -
java 线程池 异常 处理 机制 分析
2012-10-31 19:34 2131public class ThreadTest { ... -
ThreadPoolExecutor 原理-- java 线程池
2012-08-08 19:14 1144整个ThreadPoolExecutor的任务处理有4 ... -
java 缓冲
2012-08-08 19:12 1063import org.apache.log4j.Logge ... -
java 程序消耗 cpu 100% 查找方法
2012-05-16 14:38 17218问题原因:由于HashMap是非线程安全的,在多线程访问时,造 ... -
java io
2012-04-24 11:06 9171、按字节读取文件内容 2、按字符读取文件内容 3、按行读取 ... -
java 内省
2011-11-20 22:58 835java内省 -
系统常用工具类
2011-04-20 17:46 10331.ArithUtil.java ... -
spring 面向切面编程
2010-12-27 17:03 1090@Aspect public class AspectCoup ... -
jxl 写入excel
2010-11-10 13:52 10131.程序调用 ReportInterface report ... -
java 读取excel
2010-11-10 09:04 955package com.longtuo.client.act ... -
java 生成略缩图
2010-10-20 17:21 1203import java.awt.Graphics2D; imp ... -
java中对集合类的排序
2010-05-04 13:47 9021.第一种 public class User impleme ... -
Java 获取操作系统信息与Desktop类
2009-11-17 16:24 1365import java.util.Properties; ... -
java 事物处理
2009-10-15 10:52 1434public boolean deleteSchedule ...
相关推荐
本篇将详细介绍XStream如何处理XML与Java对象的相互转换,以及如何处理List、Map等集合类型的数据。 首先,XStream是一个强大的库,它由Pete Gyford开发,用于将Java对象序列化为XML,同时也能将XML反序列化为Java...
### XStream解析各种数据格式 #### 一、XStream简介 XStream 是一个简单高效的 Java 库,用于将 Java 对象序列化为 ...通过本文介绍的基本使用方法和高级特性,开发者可以更好地利用 XStream 来满足项目的实际需求。
通过以上介绍,我们对XStream 1.3的基本功能有了初步了解。在实际开发中,掌握这些知识可以帮助你更有效地利用XStream进行数据序列化和反序列化,提高代码的可读性和可维护性。对于更高级的应用,如自定义转换器和...
说明文档,通常以 PDF 或 HTML 形式提供,会详细介绍 XStream 的用法、配置选项以及常见问题解答。这包括如何设置安全策略以防止潜在的跨站脚本攻击(XSS),如何自定义转换器以处理自定义类型的对象,以及如何处理...
### Xstream使用说明 #### 一、Xstream简介 ...以上介绍了Xstream的基本使用方法以及一些高级特性。Xstream的强大之处不仅在于其简单易用,还在于其灵活性和扩展性,能够适应各种复杂的序列化需求。
通过以上介绍,我们可以看出XStream在处理XML和Java对象之间转换时的便利性。它不仅简化了开发流程,还提供了丰富的定制选项,使得XML处理更加灵活和安全。在实际项目中,尤其是涉及到XML数据交换和持久化存储时,...
XStream 的设计目标是提供一种简单且易于使用的 API,使得开发者可以快速地在 XML 和 Java 对象之间进行转换。标题中的 "xstream-distribution-1.4.7-bin.zip" 表明我们讨论的是 XStream 库的 1.4.7 版本的二进制...
1. **XStream介绍** XStream由Johannes Brodskiy创建,是一款高效且易于使用的Java库,能够将Java对象序列化为XML,反之亦然。它的核心优点在于简洁的API和清晰的XML输出,使得开发者可以快速地在Java对象和XML之间...
在描述中,虽然没有提供具体的信息,但我们可以理解为这是关于XStream的介绍,可能是它的下载、安装或者使用指南。XStream的核心优势在于它简洁的API和强大的类型转换能力,使得开发者能够方便地处理XML数据。 标签...
XStream是一个强大的Java库,它提供了一种简单而直观的方式来序列化和反序列化Java对象为XML,反之亦然。这个库广泛应用于那些需要将复杂的Java对象结构转化为XML格式进行存储或传输的场景。"xstream-distribution-...
本篇文章将详细介绍如何利用Xstream进行XML的生成和解析。 **一、Xstream简介** Xstream是Java社区中的一款开源库,由Johannes Link创建,它的设计目标是使XML序列化和反序列化变得简单直观。Xstream的核心理念是...
本文档将详细介绍如何使用XStream和Xpp3进行对象到XML的转换,并解决可能出现的问题。 首先,要使用XStream和Xpp3,你需要引入相应的库文件。在本例中,你需要`xpp3-[version].jar`和`xStream-[version].jar`这两个...
1. **XStream介绍**: - XStream是一个开源项目,由Joe Walnes创建,现在由XStream Software GmbH维护。它通过提供简单的API,使得Java对象和XML之间的转换变得极其简单。 - XStream的核心功能在于它的自动映射...
该压缩包中的“XStream+1.3.CHM”文档可能详细介绍了XStream的安装、配置、基本用法以及高级特性,包括如何处理复杂的对象关系、自定义转换器、处理循环引用、类型安全和自动类型检测等。 "bean"标签指的是...
Xstream 介绍 Xstream 提供了一种直观的方式来映射 Java 类型到 XML 结构,反之亦然。它基于反射,自动解析对象的字段并创建相应的 XML 表示。这使得开发者可以专注于业务逻辑,而无需关心底层数据转换的细节。 #...
接下来,我们将介绍如何将一个简单的Java Bean转换为XML。假设我们有一个User类: ```java public class User { private String name; private int age; // getters and setters } ``` 使用XStream,我们可以...
标签“源码”和“工具”表明这篇博客可能包含了一些代码示例和对xStream这个工具的介绍。源码部分可能涉及实际的Java代码,展示如何集成xStream到项目中,以及如何利用它来序列化和反序列化对象。工具的标签则暗示了...
XStream是一种简单高效的工具类库,用于实现Java对象与XML数据格式之间的转换。它通过反射机制来读取对象的信息,并将其转化为XML格式,反之亦然。XStream提供了丰富的API接口,使得开发者能够轻松地定制转换规则,...
这里分别详细介绍这三个库。 1. XMLPull(XML Pull Parsing API) XMLPull是一种轻量级、低级别的API,用于解析XML文档。它基于拉模型(Pull Model),即解析器不主动推送XML事件,而是由应用程序通过调用解析器的...
XStream是一个强大的库,它提供了简单直观的方式来序列化和反序列化Java对象到XML,反之亦然。在这个教程中,可能涉及了如何利用XStream处理对象流,这通常涉及到将对象序列化到流中以便存储或传输,或者从流中反...