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是由Joe Walnes创建的一个开源项目,它提供了一种简单的方式来将Java对象转换为XML,反之亦然。...
4. **对象转换为XML**:在`getXmlResponse()`方法中,创建一个User对象,然后使用XStream将其转换为XML字符串。 ```java User user = new User(); // 初始化user对象... String xmlResponse = xstream.toXML...
在Java编程语言中,XStream库提供了一个简单且强大的机制,用于将Java对象序列化为XML,反之亦然。这使得在存储数据、传输数据或持久化对象时非常方便。本教程将深入探讨XStream库及其在Java中的使用,通过实际的...
XStream的核心优势在于其简单性和灵活性,它不需要对象具有特定的字段可见性、getter和setter方法,也不需要默认构造函数。 在使用XStream时,首先需要设置开发环境。这包括安装Eclipse IDE、下载XStream库并将其...
在使用 XStream 进行序列化时,我们首先需要创建一个 `XStream` 实例,然后调用 `toXML()` 方法,传入要转换的 Java 对象。这将返回一个表示该对象的 XML 字符串。例如: ```java XStream xstream = new XStream();...
本篇文章将深入探讨如何使用XStream进行XML到对象的转换,并提供一个实际的案例。 首先,理解XStream的基本工作原理是至关重要的。XStream通过映射XML节点到Java类的字段来实现对象的序列化和反序列化。这意味着你...
XStream是一款强大的Java库,主要用于将Java对象序列...在实际开发中,XStream的简单性和灵活性使其成为处理Java对象与XML数据之间转换的首选工具。通过合理配置和使用,可以极大地提高开发效率并简化数据处理流程。
以下是一个简单的示例,演示如何使用XStream进行XML与Java对象的转换: ```java import com.thoughtworks.xstream.XStream; class User { private String name; private int age; // getters and setters ...
接下来,我们来看看如何使用XStream进行XML和Java对象的转换。首先,我们需要一个简单的Java对象,例如: ```java public class Person { private String name; private int age; private Address address; //...
XStream是一个强大的库,它使得Java对象与XML之间的转换变得极其简单。本篇文章将深入探讨如何在Android环境中利用XStream将对象转换成XML。 首先,我们需要理解XStream的基本工作原理。XStream的核心功能是它可以...
XStream的核心理念是通过简单的API,使得XML绑定到Java对象变得极其容易,无需编写大量的样板代码。 **XStream的主要特性** 1. **易用性**: XStream提供了一种简单的API,使得XML到Java对象的转换只需几行代码即可...
以下是一个简单的示例,展示了如何创建 `XStream` 实例并使用它来将 `Person` 对象转换为 XML: ```java import com.thoughtworks.xstream.XStream; public class Main { public static void main(String[] args)...
XStream 提供了一种简单而直观的方式来处理 XML 和 Java 对象之间的转换。通过使用 XStream 1.4.9,开发人员可以在项目中轻松地进行数据序列化和反序列化,便于数据存储和交换。尽管如此,使用时应注意安全问题,...
综上所述,"XStream简单应用实例(xml)"涉及了如何使用XStream库进行Java对象到XML的序列化和反序列化操作,这是Java开发中一种实用的数据处理技巧,尤其适用于需要XML格式数据交换的场景。通过学习和实践,开发者...
在“xstream使用3”这个压缩包文件中,可能包含了使用XStream注解实现XML与Java对象转换的示例代码、测试用例以及相关的说明文档。通过对这些文件的深入学习,开发者可以更好地理解如何在实际项目中运用XStream的...
总的来说,XStream是Java开发中处理XML序列化和反序列化的强大工具,其简单易用的API使得XML与Java对象之间的转换变得轻松而高效。通过熟练掌握XStream的使用,开发者可以更好地在Java应用中利用XML进行数据交换和...
Xstream是一款Java库,它提供了简单且强大的方式来序列化和反序列化Java对象到XML,以及从XML回转换为Java对象。在本文中,我们将深入探讨Xstream的核心概念、使用场景以及如何通过实例进行操作。 首先,Xstream的...
XStream 的设计目标是提供一种简单、直观的方式来处理 XML 与 Java 对象之间的映射。 ### XStream 的基本概念 1. **序列化**: 将 Java 对象转换为 XML 过程称为序列化。XStream 提供了 `toXML()` 方法,可以直接将...
Xstream的使用非常简单直观,下面通过一个简单的示例来展示如何使用Xstream进行序列化和反序列化。 ##### 2.1 JavaBean定义 首先定义一个简单的`Person`类作为JavaBean: ```java class Person { // JavaBean实体...
XStream是一个强大的库,它使得XML与Java对象之间的转换变得简单。在这个主题中,我们将深入探讨如何使用XStream进行XML与Java对象的互换,并了解其工作原理。 首先,XStream是一个开源库,由Johannes Leutenegger...