`

XStream之初识

    博客分类:
  • Java
阅读更多
官网:http://xstream.codehaus.org/download.html
相关文件可在官网中去下载
来源于:
你的第一杯Web 2.0 —— 快速浏览jQuery、Spring MVC和XStream/Jettison
http://www.infoq.com/cn/articles/First-Cup-Web-2.0-Joel-Confino
参考资料
1 XStream两分钟教程
http://www.duduwolf.com/wiki/2007/390.html
2 XStream使用方法总结附实例代码
http://www.jb51.net/article/14542.htm
3 使用 XStream 把 Java 对象序列化为 XML
http://www.ibm.com/developerworks/cn/xml/x-xstream/

XStram说明
XStream是一个Java对象和XML相互转换的工具,提供了所有的基础类型、数组、集合等类型直接转换的支持.XStream对象相当Java对象和XML之间的转换器,转换过程是双向.使用XStream 不用任何映射就能实现多数 Java 对象的序列化。在生成的 XML 中对象名变成了元素名,类中的字符串组成了 XML 中的元素内容。使用 XStream 序列化的类不需要实现 Serializable 接口。XStream 是一种序列化工具而不是数据绑定工具,就是说不能从 XML 或者 XML Schema Definition (XSD) 文件生成类。
和其他序列化工具相比,XStream 有三个突出的特点:
XStream 不关心序列化/逆序列化的类的字段的可见性。
序列化/逆序列化类的字段不需要 getter 和 setter 方法。
序列化/逆序列化的类不需要有默认构造函数。
不需要修改类,使用 XStream 就能直接序列化/逆序列化任何第三方类

第一个示例
实体类
public class Employee {
	private String name;
	private String designation;
	private String department;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getDesignation() {
		return designation;
	}

	public void setDesignation(String designation) {
		this.designation = designation;
	}

	public String getDepartment() {
		return department;
	}

	public void setDepartment(String department) {
		this.department = department;
	}

	@Override
	public String toString() {
		return "Name : " + this.name + "\nDesignation : " + this.designation
				+ "\nDepartment : " + this.department;
	}
}


写入类
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import com.thoughtworks.xstream.*;

public class Writer {

	public static void main(String[] args) {
		Employee e = new Employee();	
		e.setName("Jack");
		e.setDesignation("Manager");
		e.setDepartment("Finance");		
		XStream xs = new XStream();
		try {
			FileOutputStream fs = new FileOutputStream("c:/temp/employeedata.txt");
			xs.toXML(e, fs);
		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		}
	}
}


读取类
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import com.thoughtworks.xstream.*;
import com.thoughtworks.xstream.io.xml.DomDriver;

public class Reader {

	public static void main(String[] args) {
		XStream xs = new XStream(new DomDriver());
		Employee e = new Employee();

		try {
			FileInputStream fis = new FileInputStream("c:/temp/employeedata.txt");
			xs.fromXML(fis, e);
			System.out.println(e.toString());
		} catch (FileNotFoundException ex) {
			ex.printStackTrace();
		}
	}
}


第二个示例
Config.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
 <datasource-name>IRIS</datasource-name>
 <ipaddress>9.124.74.85</ipaddress>
 <logfilename>DailyLogApplication.log</logfilename>
 <appender>console</appender>
</config>

import java.io.FileInputStream;
import java.io.FileNotFoundException;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

public class ConfigReader {

	String datasourcename = null;
	String ipaddress = null;
	String logfilename = null;
	String appender = null;

	@Override
	public String toString() {		
		return "Datasource Name : " + datasourcename + " \nIP Address : "
				+ ipaddress + " \nLogfilename : " + logfilename
				+ " \nAppender : " + appender;
	}

	/**
	 * @param args
	 * @throws FileNotFoundException
	 */
	public static void main(String[] args) throws FileNotFoundException {
		XStream xs = new XStream(new DomDriver());		
		FileInputStream fis = new FileInputStream("c:/temp/Config.xml");
		xs.aliasField("datasource-name", ConfigReader.class, "datasourcename");
		xs.alias("config", ConfigReader.class);		
		ConfigReader r = (ConfigReader) xs.fromXML(fis);
		System.out.println(r.toString());
	}
}


第三个示例
Person.java
public class Person {
    private String firstName;
    private String lastName;
    private PhoneNumber phone;
    private PhoneNumber fax;   

    public Person(String firstName, String lastName) {
       this.firstName = firstName;
       this.lastName = lastName;
    }
	public String getFirstName() {
		return firstName;
	}
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}
	public String getLastName() {
		return lastName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
	public PhoneNumber getPhone() {
		return phone;
	}
	public void setPhone(PhoneNumber phone) {
		this.phone = phone;
	}
	public PhoneNumber getFax() {
		return fax;
	}
	public void setFax(PhoneNumber fax) {
		this.fax = fax;
	}  
	public String toString(){
		   return "firstName: " + firstName + ",lastName: " + lastName+",phone: [" + phone+"],fax: [" + fax+"]";
	}
}


PhoneNumber.java
public class PhoneNumber {
    private int code;
    private String number;
    
    public PhoneNumber(int code, String number) {
        this.code = code;
        this.number = number;
    }
	public int getCode() {
		return code;
	}
	public void setCode(int code) {
		this.code = code;
	}
	public String getNumber() {
		return number;
	}
	public void setNumber(String number) {
		this.number = number;
	}
   public String toString(){
	   return "code: " + code + ",number: " + number;
   }
}


测试类
import com.thoughtworks.xstream.XStream;

public class Test {

    public static void main(String[] args) {   
       // XStream默认的构造函数是调用XPP3来解析XML的,
       // XPP3是一个pull-parser实现,据说这是目前最快的解析XML的类
       // 我们也可以不用这个,还用JAXP去解析
      // XStream xstream = new XStream(new DomDriver()); 
       XStream xstream = new XStream();      
       // 为类设置别名
       // 如果不设置,生成的XML会是类的全称,含包名
       xstream.alias("person", Person.class);
       xstream.alias("phonenumber", PhoneNumber.class);     
       Person joe = new Person("Joe", "Walnes");
       joe.setPhone(new PhoneNumber(123, "1234-456"));
       joe.setFax(new PhoneNumber(123, "9999-999"));    
       // 解析Object成XML
       String xml = xstream.toXML(joe);       
       System.out.println("xml: "+xml);    
       // 把XML解析成Object
       Person newJoe = (Person)xstream.fromXML(xml);
       System.out.println("newJoe: "+newJoe);
    }

}

jar见附件
分享到:
评论
2 楼 wfm0105 2014-03-29  
刚刚项目用上,调用WS需要的传入一段XML字符串格式信息。谢了
1 楼 fox93073906 2011-07-19  

相关推荐

    最齐全的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 最齐全的xstream1.4.8.jar ...

    xstream-1.4.15.jar

    XStream 反序列化漏洞(CVE-2020-26258 & 26259),修复jar包 xstream-1.4.15.jar Xstream 是 Java 类库,用来将对象序列化成 XML (JSON) 或反序列化为对象。XStream 是一款开源软件,允许在 BSD 许可证的许可下分发...

    xstream最新版 - xstream-1.4.18.jar

    xstream最新版jar包

    xstream-1.4.2.jar

    《XStream详解与应用》 XStream是一款强大的Java库,用于将对象序列化为XML,同时也能从XML数据中反序列化回对象。在标题"xstream-1.4.2.jar"中,我们看到的是XStream的一个特定版本——1.4.2。这个版本包含了...

    XStream解析XML实例

    **XStream解析XML实例** 在Java开发中,处理XML数据是一项常见的任务,XStream库提供了一个简单而强大的方式来将Java对象序列化为XML,以及从XML反序列化回Java对象。这个实例将深入探讨如何使用XStream进行XML操作...

    xstream_1.4.3及其依赖包_xstream_1.4.3及其依赖包

    XStream是一个Java库,它能够将Java对象转换为XML,反之亦然,使得数据序列化和反序列化变得简单易行。在标题“xstream_1.4.3及其依赖包”中,提及的是XStream的1.4.3版本,这是一个稳定且广泛使用的版本。该版本...

    Java用xStream拼接xml

    当需要将数据转换为XML格式以便于传输或处理时,工具如xStream就显得尤为重要。Java中的xStream库提供了一个简单易用的方式来将Java对象序列化为XML,反之亦然,即反序列化XML回Java对象。 **xStream简介** xStream...

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

    XStream库提供了一个简单、直观的方式来实现这种转换,使得XML序列化和反序列化变得非常方便。本篇将详细介绍XStream如何处理XML与Java对象的相互转换,以及如何处理List、Map等集合类型的数据。 首先,XStream是一...

    xstream1.4.15.JAR

    XStream 是一个流行的 Java 库,用于将对象序列化为 XML 和从 XML 反序列化回对象。这个库广泛应用于各种 Java 应用程序,尤其是那些需要在网络间传输或存储对象数据的情况。在标题提到的 "xstream1.4.15.JAR" 文件...

    xstream相关的jar包

    XStream是一款强大的Java库,用于将Java对象序列化为XML,反之亦然。这个库的主要优点在于其简单易用的API和对复杂对象图的处理能力。在标题中提到的"Xstream相关的jar包",是指为了使用XStream库,需要引入的依赖...

    xStream完整Jar包

    **XStream 概述** XStream 是一个 Java 库,用于将对象序列化为 XML,以及从 XML 反序列化回对象。它提供了一种简单而直观的方式来处理 XML 数据,使得 XML 文档与 Java 对象之间的转换变得轻而易举。这个“xStream...

    xstream-1.4.5.jar

    xstream xstream-1.4.5.jar

    xstream-1.4.8最齐全的jar包

    XStream是一款强大的Java库,主要用于将Java对象序列化为XML,以及将XML反序列化回Java对象。在Java开发中,这种能力对于数据持久化、网络传输或配置存储等场景非常有用。标题中的"xstream-1.4.8最齐全的jar包"表明...

    xstream-1.4.11-API文档-中文版.zip

    赠送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解析依赖包详解》 在Java开发中,数据序列化是一个不可或缺的环节,它使得对象的状态可以被保存和恢复。XStream是一款强大的Java库,用于将Java对象转换为XML,反之亦然,极大地简化了序列化和反序列化的...

    xstream-1.3.1.zip

    《XStream 1.3.1:Java对象到XML的高效转换工具》 XStream是一款强大的Java库,它能够将Java对象序列化为XML,并能从XML反序列化回Java对象。这个“xstream-1.3.1.zip”文件包含了一个名为“xstream-1.3.1.jar”的...

    xstream-1.4.19.jar

    xstream-1.4.19.jar

    Oracle Database XStream Guide 11g Release 2 (11.2)-302

    Oracle Database XStream Guide 11g Release 2 (11.2)-302 Oracle Database XStream 是 ...其强大的数据捕获和事件处理能力、灵活的数据传输机制和高可用性架构,使其成为企业级数据集成和事件驱动架构的不二之选。

    xstream-1.4.20.jar

    xstream-1.4.20.jar

    xstream.jar及其他依赖jar包

    XPP3是XStream的依赖之一,因为它在解析XML时提供了高效的事件驱动模型。XPP3不构建完整的DOM树,而是按需解析XML,节省内存并提高性能。 **XMLPull库**:xmlpull_1_0_5.jar是XML Pull API的版本,它定义了一组接口...

Global site tag (gtag.js) - Google Analytics