`
OracleX
  • 浏览: 124299 次
  • 性别: Icon_minigender_1
  • 来自: 地球
社区版块
存档分类
最新评论

XStream简单对象使用

 
阅读更多

 

XStream的优点很多,但是也有一些小bug,比如在定义别名中的下划线“_”转换为xml后会变成“__”这个符号,很变态。因此,尽量避免在别名中实用任何符号,却是需要下划线的时候,可以考虑实用连接符“-”,这个没有问题。
 
另外,我们的Java Bean中,常常有一些常量,在转换过程,XStream也会将这些常量转换过去,形成常量的xml节点,这显然不是想要的结果,对于常量字段,就不做转换了。

Category.java

 

public class Category {

	private int id;
	private String name;
	private String remark;

	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 getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}

}

 Content.java

 

public class Content {
	private int id;
	private String title;
	private String content;
	private String createTime;
	private String updateTime;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public String getCreateTime() {
		return createTime;
	}

	public void setCreateTime(String createTime) {
		this.createTime = createTime;
	}

	public String getUpdateTime() {
		return updateTime;
	}

	public void setUpdateTime(String updateTime) {
		this.updateTime = updateTime;
	}
}

 Java对象转换成XML:

 

package com;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;

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

public class Object2XML {
	static XStream xs = new XStream(new DomDriver());
	static String xmlContent;

	public static void main(String args[]) {
		Content content = new Content();
		content.setId(001);
		content.setTitle("XStreamTest");
		content.setContent("ooxx");
		content.setCreateTime("yesterday");
		content.setUpdateTime("now");

		try {
			String location = "d:/temp/object2xml.xml";
			File file = new File(location);
			if(!file.exists()||file.isDirectory()){
				String[] arry=location.split("/");
				File file1=new File(arry[0]+"/"+arry[1]); //创建文件夹后如果后面对文件操作的话会自动创建文件
				file1.mkdir();
			}
			FileOutputStream fos = new FileOutputStream(file); //提示:字节流
			OutputStreamWriter osw = new OutputStreamWriter(fos, Charset.forName("gbk")); //作用:使字节流转换成字符流  osw是字符流通向字节流的桥梁,使用Charset指定字符编码
			//ows调用write()方法会调用转换器
			BufferedWriter bw = new BufferedWriter(osw); //提示:为了获得最高效率,把osw包装到bw中,这样做可以避免频繁调用转换器
			bw.write("<?xml version=\"1.0\" encoding=\"gbk\" ?>\n"); //提示:在生成的xml前面加上基本信息
			xs.alias("content", Content.class);  //提示:给类取别名
			xs.aliasField("内容", Content.class, "content");  //提示:给属性取别名
			xs.toXML(content, bw);
			bw.close();  //作用:关闭流
			osw.close();
			fos.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

 结果:

 

<?xml version="1.0" encoding="gbk" ?>
<content>
  <id>1</id>
  <title>XStreamTest</title>
  <内容>ooxx</内容>
  <createTime>yesterday</createTime>
  <updateTime>now</updateTime>
</content>

 XML转换成Java对象:

 

package com;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import com.model.Content;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

public class XML2Object {

	static XStream xs = new XStream(new DomDriver());

	public static void main(String args[]) {
		File file = new File("d:/temp/object2xml.xml"); // 名字区分大小写!
		Content content = new Content();
		try {
			FileInputStream fis = new FileInputStream(file);
			InputStreamReader isw = new InputStreamReader(fis);
			BufferedReader br = new BufferedReader(isw);
			xs.alias("content", Content.class);// 生成与解析时代别名要对应!!!!
			xs.aliasField("内容", Content.class, "content");
			xs.fromXML(br, content);
			br.close();
			isw.close();
			fis.close();
			System.out.println("id=" + content.getId());
			System.out.println("title=" + content.getTitle());
			System.out.println("content=" + content.getContent());
			System.out.println("createTime=" + content.getCreateTime());
			System.out.println("updateTime=" + content.getUpdateTime());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 结果:

 

id=1

title=XStreamTest

content=ooxx

createTime=yesterday

updateTime=now


分享到:
评论

相关推荐

    使用XStream序列化/反序列化对象

    在这个场景中,我们将深入探讨如何使用XStream处理对象的序列化和反序列化。 首先,让我们了解什么是XStream。XStream是由Joe Walnes创建的一个开源项目,它提供了一种简单的方式来将Java对象转换为XML,反之亦然。...

    springMVC整合xStream实现对象和xml转换

    4. **对象转换为XML**:在`getXmlResponse()`方法中,创建一个User对象,然后使用XStream将其转换为XML字符串。 ```java User user = new User(); // 初始化user对象... String xmlResponse = xstream.toXML...

    xstream对象与xml转换

    在Java编程语言中,XStream库提供了一个简单且强大的机制,用于将Java对象序列化为XML,反之亦然。这使得在存储数据、传输数据或持久化对象时非常方便。本教程将深入探讨XStream库及其在Java中的使用,通过实际的...

    XStream对象序列化

    XStream的核心优势在于其简单性和灵活性,它不需要对象具有特定的字段可见性、getter和setter方法,也不需要默认构造函数。 在使用XStream时,首先需要设置开发环境。这包括安装Eclipse IDE、下载XStream库并将其...

    Xstream_java对象和xml的互相转换

    在使用 XStream 进行序列化时,我们首先需要创建一个 `XStream` 实例,然后调用 `toXML()` 方法,传入要转换的 Java 对象。这将返回一个表示该对象的 XML 字符串。例如: ```java XStream xstream = new XStream();...

    XStream解析xml 转换成对象案例

    本篇文章将深入探讨如何使用XStream进行XML到对象的转换,并提供一个实际的案例。 首先,理解XStream的基本工作原理是至关重要的。XStream通过映射XML节点到Java类的字段来实现对象的序列化和反序列化。这意味着你...

    XStream在Java对象和XML之间相互转换

    XStream是一款强大的Java库,主要用于将Java对象序列...在实际开发中,XStream的简单性和灵活性使其成为处理Java对象与XML数据之间转换的首选工具。通过合理配置和使用,可以极大地提高开发效率并简化数据处理流程。

    xstream轻松解析xml到java对象

    以下是一个简单的示例,演示如何使用XStream进行XML与Java对象的转换: ```java import com.thoughtworks.xstream.XStream; class User { private String name; private int age; // getters and setters ...

    好用的xStream XML和JAVA对象互相转换的简单示例

    接下来,我们来看看如何使用XStream进行XML和Java对象的转换。首先,我们需要一个简单的Java对象,例如: ```java public class Person { private String name; private int age; private Address address; //...

    android XMl 解析神奇xstream 二: 把对象转换成xml

    XStream是一个强大的库,它使得Java对象与XML之间的转换变得极其简单。本篇文章将深入探讨如何在Android环境中利用XStream将对象转换成XML。 首先,我们需要理解XStream的基本工作原理。XStream的核心功能是它可以...

    XStream简单应用实例

    XStream的核心理念是通过简单的API,使得XML绑定到Java对象变得极其容易,无需编写大量的样板代码。 **XStream的主要特性** 1. **易用性**: XStream提供了一种简单的API,使得XML到Java对象的转换只需几行代码即可...

    XStream使用文档 wd.docx

    以下是一个简单的示例,展示了如何创建 `XStream` 实例并使用它来将 `Person` 对象转换为 XML: ```java import com.thoughtworks.xstream.XStream; public class Main { public static void main(String[] args)...

    xstream-1.4.9实现xml与对象互转

    XStream 提供了一种简单而直观的方式来处理 XML 和 Java 对象之间的转换。通过使用 XStream 1.4.9,开发人员可以在项目中轻松地进行数据序列化和反序列化,便于数据存储和交换。尽管如此,使用时应注意安全问题,...

    XStream简单应用实例(xml)

    综上所述,"XStream简单应用实例(xml)"涉及了如何使用XStream库进行Java对象到XML的序列化和反序列化操作,这是Java开发中一种实用的数据处理技巧,尤其适用于需要XML格式数据交换的场景。通过学习和实践,开发者...

    使用XStream是实现XML与Java对象的转换(3)--注解

    在“xstream使用3”这个压缩包文件中,可能包含了使用XStream注解实现XML与Java对象转换的示例代码、测试用例以及相关的说明文档。通过对这些文件的深入学习,开发者可以更好地理解如何在实际项目中运用XStream的...

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

    总的来说,XStream是Java开发中处理XML序列化和反序列化的强大工具,其简单易用的API使得XML与Java对象之间的转换变得轻松而高效。通过熟练掌握XStream的使用,开发者可以更好地在Java应用中利用XML进行数据交换和...

    xstream使用小记

    Xstream是一款Java库,它提供了简单且强大的方式来序列化和反序列化Java对象到XML,以及从XML回转换为Java对象。在本文中,我们将深入探讨Xstream的核心概念、使用场景以及如何通过实例进行操作。 首先,Xstream的...

    xstream使用案例

    XStream 的设计目标是提供一种简单、直观的方式来处理 XML 与 Java 对象之间的映射。 ### XStream 的基本概念 1. **序列化**: 将 Java 对象转换为 XML 过程称为序列化。XStream 提供了 `toXML()` 方法,可以直接将...

    Xstream使用说明

    Xstream的使用非常简单直观,下面通过一个简单的示例来展示如何使用Xstream进行序列化和反序列化。 ##### 2.1 JavaBean定义 首先定义一个简单的`Person`类作为JavaBean: ```java class Person { // JavaBean实体...

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

    XStream是一个强大的库,它使得XML与Java对象之间的转换变得简单。在这个主题中,我们将深入探讨如何使用XStream进行XML与Java对象的互换,并了解其工作原理。 首先,XStream是一个开源库,由Johannes Leutenegger...

Global site tag (gtag.js) - Google Analytics