Xstream能干什么:
一、将XML文件解析为java对象
二、将java对象解析为XML文件
注:附件为使用XStream所依赖的jar包
1:首先可以看这么一个xml文件,目的就是要解析它到java对象:
<?xml version="1.0" encoding="GB2312"?>
<cn.javasd.xstream.XstreamList>
<testList>
<cn.javasd.xstream.TestDto>
<NAME>张路平</NAME>
<USER>luping</USER>
<PASSWORD>asd3839729</PASSWORD>
</cn.javasd.xstream.TestDto>
<cn.javasd.xstream.TestDto>
<NAME>邢敏娜</NAME>
<USER>minna</USER>
<PASSWORD>3839729asd</PASSWORD>
</cn.javasd.xstream.TestDto>
</testList>
<other>Just a String!</other>
</cn.javasd.xstream.XstreamList>
2、定义转换后的java类
package cn.javasd.xstream;
import java.util.List;
public class XstreamList {
private List testList;
private String other;
//省略 getters and setters
}
通过比对XML文件的标签会发现这个类对应的是 <cn.javasd.xstream.XstreamList> 标签
testList属性对应<testList>标签
other属性对应<other>标签
看到这里想必也明白了Xstream的范式了,
这里我还定义了一个DTO,对应xml文件可以发现,它对应的就是 <cn.javasd.xstream.TestDto> 标签
这个标签在 <testList> 标签下,所以很容易理解就是 XstreamList 类中List中所填充的对象,这个DTO如下:
package cn.javasd.xstream;
public class TestDto {
private String NAME;
private String USER;
private String PASSWORD;
//省略getters and setters
}
3、解析XML文件到java对象
XML文件有了,对应的 java 对象也有了,怎么建立之间的关系呢
下面这个测试方法类就完成了解析,为了方便阅读,我将讲解都放到了类中的注释
这里面用到了Spring解析文件用的Resource类,提供了三种获取配置文件的方法,
当然Spring对这三种方法(其实还有)做了策略封装,这里为了方便,
就直接调用相应的类,不过,这不是这篇文章的重点,大家也可以用java的流去解析
package cn.javasd.xstream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
public class TestXStream {
@SuppressWarnings("unchecked")
public static void main(String args[]) throws IOException{
//以下三种获取方式均可以获取Resource资源
//1、按照classpath查找
@SuppressWarnings("unused")
Resource resource1 = new ClassPathResource("cfg/testXStream.xml");
//2、按照文件系统查找
@SuppressWarnings("unused")
Resource resource2 = new FileSystemResource("D:\\My Java Work6\\jms\\src\\cfg\\testXStream.xml");
//3、按照URL查找,如果要查找本地文件,前面可以加file 对应非本地的可以加 ftp 等
Resource resource3 = new UrlResource("file:/D:/My Java Work6/jms/src/cfg/testXStream.xml");
//提供的一些方法,可以自己试试
//获取文件的上次修改的时间
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(resource3.lastModified())));
//获取配置文件的输入流
InputStream is = resource3.getInputStream();
//new一个Xstream对象,有些时候也可以new XStream(); 但是我这里报错,需要指定解析驱动,就写成了下面这样
XStream stream = new XStream(new DomDriver());
//完成对象的转换,很简单,就是一个fromXML(InputStream is)方法
XstreamList xstreamList = (XstreamList)stream.fromXML(is);
//循环遍历打印展示结果
List<TestDto> list = xstreamList.getTestList();
for(TestDto dto:list){
System.out.println(xstreamList.getOther());
System.out.println(dto.getNAME() + " -- " + dto.getUSER() + " -- " + dto.getPASSWORD());
}
//第二项功能,将java对象序列化输出为 xml
//设置别名,为输出的xml进行简化,可以将下面一行注掉比对下输出结果
stream.alias("Xlist", XstreamList.class);
//调用 toXML(Object obj);方法完成转换
String s = stream.toXML(xstreamList);
System.out.println(s);
//不推荐这么写,开发中最好编写完整的 try catch块
is.close();
}
}
到此为止,XStream的两个基本用法就完成了,以上实例均在本地运行过,不过要添加相应的getter and setter方法
抛砖引玉,有错误或高级应用的,望不吝赐教。
分享到:
相关推荐
默认情况下,XStream 可以处理大部分基础类型和标准集合框架类。对于自定义类,它会基于类的属性和字段创建 XML 节点。 ### 使用 XStream 的步骤 1. **添加依赖**: 首先,你需要在项目中引入 XStream 的依赖库。...
总结来说,XStream依赖于xpp3_min-1.1.4c.jar作为XML解析的基础,结合自身的对象绑定机制,为Java开发者提供了一套强大且易于使用的XML序列化和反序列化工具。尽管xpp3_min-1.1.4c.jar是精简版,但它确保了XStream在...
在"XStream+技术指南.docx"中,你将找到丰富的实践示例,涵盖基础操作、复杂类型转换、安全配置等多个方面,帮助你更好地理解并运用XStream。 九、进阶话题 "XStream教程.rar"包含更高级的主题,如处理集合、数组、...
3. **内存效率**:XStream在内存中使用高效的表示方式,降低了内存消耗。 4. **自定义转换器**:对于复杂的数据类型或者自定义对象,可以通过实现XStream的Converter接口来自定义XML到Java对象的转换逻辑。 5. **XML...
XStream 1.4 版本在之前的版本基础上进行了优化和增强,使其更加稳定和高效。本文将深入探讨 XStream 1.4 的主要功能、API 使用方法以及一些关键概念。 **1. XStream 基本原理** XStream 的工作原理是通过反射和...
如果`XStream`的基础功能无法满足需求,可以通过实现自定义转换器或者利用其扩展性来实现更复杂的任务,如生成HTML或其他非XML格式的数据。然而,这些高级功能通常只在特定情况下使用。 `XStream`的优点包括简单...
### XStream组件基础 XStream 的核心功能是通过`toXML()`和`fromXML()`两个方法来实现对象和XML之间的转换。首先,你需要添加必要的依赖,即 `xstream-1.3.1.jar` 到你的项目中。 ### 将对象转换为XML 1. **创建...
除了上述基础用法,XStream还支持流式处理、命名空间、注解驱动的转换等高级特性。通过注解,我们可以直接在Java类上声明XML结构,使得代码更清晰,配置更简单。 ```java @XStreamAlias("user") public class ...
例如,他们可能会使用XStream来配置消息的序列化方式,以便在ActiveMQ的客户端和服务器之间安全、高效地传输复杂的数据结构。同时,了解如何正确配置和使用这个组件,以及理解XStream的工作原理,对于提升应用程序的...
1. 基础使用: ```java XStream xstream = new XStream(); Person person = new Person("John", "Doe"); String xml = xstream.toXML(person); System.out.println(xml); ``` 上述代码会将`Person`对象转换成...
标题 "xStream完美转换XML、JSON" 指的...这些文件可以作为进一步学习和实践的基础,帮助开发者更好地理解和掌握xStream在实际项目中的应用。在实践中,应该根据具体需求调整和优化转换过程,确保数据的准确性和效率。
XStream是一款强大的...xmlpull和xpp3提供了底层的XML解析能力,而xstream则在此基础上提供了高级的Java对象与XML之间的映射服务。无论你是进行数据持久化,还是在网络之间传递数据,XStream都是一个值得信赖的选择。
XMLPull-1.1.3.1.jar是XMLPull API的一个实现,它是XPP3的基础,提供了一种低级别的XML解析机制,允许开发者逐个事件地处理XML流,而无需构建完整的DOM树,从而节省了内存。 这些库的组合使用,使得在Java应用程序...
在XStream中,最基础的操作就是序列化和反序列化。以下是一个简单的示例: ```java import com.thoughtworks.xstream.XStream; public class XStreamDemo { public static void main(String[] args) { // 创建...
提供了所有的基础类型、数组、集合等类型直接转换的支持。 因此XML常用于数据交换、对象序列化(这种序列化和Java对象的序列化技术有着本质的区别)。 Stream对象相当Java对象和XML之间的转换器,转换过程是双向...
提供了所有的基础类型、数组、集合等类型直接转换的支持。 因此XML常用于数据交换、对象序列化. Stream对象相当Java对象和XML之间的转换器,转换过程是双向的。创建XSteam对象的方式很简单,只需要new XStream()...
android 使用Java库xstream示例。这是Java解析xml文件的库,基于Java7基础上的。那么在android上也是一样适用的。我的博客:http://blog.csdn.net/qq_16064871
1. 引入XStream库:在项目中引入`xstream-1.1.3.jar`,这是执行序列化和反序列化操作的基础。 2. 创建XStream实例:首先,你需要创建一个XStream的实例,通常通过`new XStream()`构造函数来完成。你可以根据需要...
XStream是一个Java对象和XML相互转换的工具,很好很强大。...XStream使用起来非常简单,不需要预先生成相关的辅助类,不需要映射文件。当然,使用简单也注定了它只能处理简单结构的 XML 文件。 标签:XStream
这三个库在Java XML处理中扮演着不同的角色:XStream提供了对象到XML的序列化和反序列化,dom4j提供了强大的XML文档操作能力,而XPP3作为基础解析器,确保了高效的数据读取。在开发过程中,根据需求选择合适的库组合...