`

XStream简单介绍

XML 
阅读更多
创建能够序列化的类

这是一组简单的类。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);
			    	}
			    }
		});
分享到:
评论

相关推荐

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

    本篇将详细介绍XStream如何处理XML与Java对象的相互转换,以及如何处理List、Map等集合类型的数据。 首先,XStream是一个强大的库,它由Pete Gyford开发,用于将Java对象序列化为XML,同时也能将XML反序列化为Java...

    XStream解析各种数据格式

    ### XStream解析各种数据格式 #### 一、XStream简介 XStream 是一个简单高效的 Java 库,用于将 Java 对象序列化为 ...通过本文介绍的基本使用方法和高级特性,开发者可以更好地利用 XStream 来满足项目的实际需求。

    XStream 1.3 API 手册

    通过以上介绍,我们对XStream 1.3的基本功能有了初步了解。在实际开发中,掌握这些知识可以帮助你更有效地利用XStream进行数据序列化和反序列化,提高代码的可读性和可维护性。对于更高级的应用,如自定义转换器和...

    xstream-1.4.8的jar包、源码、说明文档.zip

    说明文档,通常以 PDF 或 HTML 形式提供,会详细介绍 XStream 的用法、配置选项以及常见问题解答。这包括如何设置安全策略以防止潜在的跨站脚本攻击(XSS),如何自定义转换器以处理自定义类型的对象,以及如何处理...

    Xstream使用说明

    ### Xstream使用说明 #### 一、Xstream简介 ...以上介绍了Xstream的基本使用方法以及一些高级特性。Xstream的强大之处不仅在于其简单易用,还在于其灵活性和扩展性,能够适应各种复杂的序列化需求。

    xstream轻松解析xml到java对象

    通过以上介绍,我们可以看出XStream在处理XML和Java对象之间转换时的便利性。它不仅简化了开发流程,还提供了丰富的定制选项,使得XML处理更加灵活和安全。在实际项目中,尤其是涉及到XML数据交换和持久化存储时,...

    xstream-distribution-1.4.7-bin.zip

    XStream 的设计目标是提供一种简单且易于使用的 API,使得开发者可以快速地在 XML 和 Java 对象之间进行转换。标题中的 "xstream-distribution-1.4.7-bin.zip" 表明我们讨论的是 XStream 库的 1.4.7 版本的二进制...

    xstream.rar

    1. **XStream介绍** XStream由Johannes Brodskiy创建,是一款高效且易于使用的Java库,能够将Java对象序列化为XML,反之亦然。它的核心优点在于简洁的API和清晰的XML输出,使得开发者可以快速地在Java对象和XML之间...

    xstream-1.3.1

    在描述中,虽然没有提供具体的信息,但我们可以理解为这是关于XStream的介绍,可能是它的下载、安装或者使用指南。XStream的核心优势在于它简洁的API和强大的类型转换能力,使得开发者能够方便地处理XML数据。 标签...

    xstream-distribution-1.4.15-bin.zip

    XStream是一个强大的Java库,它提供了一种简单而直观的方式来序列化和反序列化Java对象为XML,反之亦然。这个库广泛应用于那些需要将复杂的Java对象结构转化为XML格式进行存储或传输的场景。"xstream-distribution-...

    Xstream生成和解析xml.rar

    本篇文章将详细介绍如何利用Xstream进行XML的生成和解析。 **一、Xstream简介** Xstream是Java社区中的一款开源库,由Johannes Link创建,它的设计目标是使XML序列化和反序列化变得简单直观。Xstream的核心理念是...

    XStream和Xpp3实现对象到XML的互转参考文档

    本文档将详细介绍如何使用XStream和Xpp3进行对象到XML的转换,并解决可能出现的问题。 首先,要使用XStream和Xpp3,你需要引入相应的库文件。在本例中,你需要`xpp3-[version].jar`和`xStream-[version].jar`这两个...

    java XStream xml解析 jar包.zip

    1. **XStream介绍**: - XStream是一个开源项目,由Joe Walnes创建,现在由XStream Software GmbH维护。它通过提供简单的API,使得Java对象和XML之间的转换变得极其简单。 - XStream的核心功能在于它的自动映射...

    XStream_1.3.chm 带 实例

    该压缩包中的“XStream+1.3.CHM”文档可能详细介绍了XStream的安装、配置、基本用法以及高级特性,包括如何处理复杂的对象关系、自定义转换器、处理循环引用、类型安全和自动类型检测等。 "bean"标签指的是...

    Xstream操作Xml与Json.doc

    Xstream 介绍 Xstream 提供了一种直观的方式来映射 Java 类型到 XML 结构,反之亦然。它基于反射,自动解析对象的字段并创建相应的 XML 表示。这使得开发者可以专注于业务逻辑,而无需关心底层数据转换的细节。 #...

    xstream 让javabean和xml互相转换

    接下来,我们将介绍如何将一个简单的Java Bean转换为XML。假设我们有一个User类: ```java public class User { private String name; private int age; // getters and setters } ``` 使用XStream,我们可以...

    xStream_two_item

    标签“源码”和“工具”表明这篇博客可能包含了一些代码示例和对xStream这个工具的介绍。源码部分可能涉及实际的Java代码,展示如何集成xStream到项目中,以及如何利用它来序列化和反序列化对象。工具的标签则暗示了...

    XStream使用方法总结-对象-转换.txt

    XStream是一种简单高效的工具类库,用于实现Java对象与XML数据格式之间的转换。它通过反射机制来读取对象的信息,并将其转化为XML格式,反之亦然。XStream提供了丰富的API接口,使得开发者能够轻松地定制转换规则,...

    xmlpull.jar和xpp3_min-1.1.4c.jar以及xstream-1.4.2.jar

    这里分别详细介绍这三个库。 1. XMLPull(XML Pull Parsing API) XMLPull是一种轻量级、低级别的API,用于解析XML文档。它基于拉模型(Pull Model),即解析器不主动推送XML事件,而是由应用程序通过调用解析器的...

    使用XStream是实现XML与Java对象的转换(5)--Object Stream

    XStream是一个强大的库,它提供了简单直观的方式来序列化和反序列化Java对象到XML,反之亦然。在这个教程中,可能涉及了如何利用XStream处理对象流,这通常涉及到将对象序列化到流中以便存储或传输,或者从流中反...

Global site tag (gtag.js) - Google Analytics