`
elfasd
  • 浏览: 100204 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

XStream基础使用

    博客分类:
  • xml
阅读更多

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使用案例

    默认情况下,XStream 可以处理大部分基础类型和标准集合框架类。对于自定义类,它会基于类的属性和字段创建 XML 节点。 ### 使用 XStream 的步骤 1. **添加依赖**: 首先,你需要在项目中引入 XStream 的依赖库。...

    xstream解析依赖包

    总结来说,XStream依赖于xpp3_min-1.1.4c.jar作为XML解析的基础,结合自身的对象绑定机制,为Java开发者提供了一套强大且易于使用的XML序列化和反序列化工具。尽管xpp3_min-1.1.4c.jar是精简版,但它确保了XStream在...

    xstream教程资料.rar

    在"XStream+技术指南.docx"中,你将找到丰富的实践示例,涵盖基础操作、复杂类型转换、安全配置等多个方面,帮助你更好地理解并运用XStream。 九、进阶话题 "XStream教程.rar"包含更高级的主题,如处理集合、数组、...

    XStream及依赖包

    3. **内存效率**:XStream在内存中使用高效的表示方式,降低了内存消耗。 4. **自定义转换器**:对于复杂的数据类型或者自定义对象,可以通过实现XStream的Converter接口来自定义XML到Java对象的转换逻辑。 5. **XML...

    xstream-1.4-API

    XStream 1.4 版本在之前的版本基础上进行了优化和增强,使其更加稳定和高效。本文将深入探讨 XStream 1.4 的主要功能、API 使用方法以及一些关键概念。 **1. XStream 基本原理** XStream 的工作原理是通过反射和...

    XStream使用方法总结附实例代码

    如果`XStream`的基础功能无法满足需求,可以通过实现自定义转换器或者利用其扩展性来实现更复杂的任务,如生成HTML或其他非XML格式的数据。然而,这些高级功能通常只在特定情况下使用。 `XStream`的优点包括简单...

    XStream组件进行Object与XML互转用法

    ### XStream组件基础 XStream 的核心功能是通过`toXML()`和`fromXML()`两个方法来实现对象和XML之间的转换。首先,你需要添加必要的依赖,即 `xstream-1.3.1.jar` 到你的项目中。 ### 将对象转换为XML 1. **创建...

    xstream 的高级用法,自定义输出结构

    除了上述基础用法,XStream还支持流式处理、命名空间、注解驱动的转换等高级特性。通过注解,我们可以直接在Java类上声明XML结构,使得代码更清晰,配置更简单。 ```java @XStreamAlias("user") public class ...

    activemq-transport-xstream-1.4.jar.zip

    例如,他们可能会使用XStream来配置消息的序列化方式,以便在ActiveMQ的客户端和服务器之间安全、高效地传输复杂的数据结构。同时,了解如何正确配置和使用这个组件,以及理解XStream的工作原理,对于提升应用程序的...

    xstream-distribution-1.4.10-bin.zip

    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完美转换XML、JSON" 指的...这些文件可以作为进一步学习和实践的基础,帮助开发者更好地理解和掌握xStream在实际项目中的应用。在实践中,应该根据具体需求调整和优化转换过程,确保数据的准确性和效率。

    XStream依赖Jar包

    XStream是一款强大的...xmlpull和xpp3提供了底层的XML解析能力,而xstream则在此基础上提供了高级的Java对象与XML之间的映射服务。无论你是进行数据持久化,还是在网络之间传递数据,XStream都是一个值得信赖的选择。

    xstream.rar

    XMLPull-1.1.3.1.jar是XMLPull API的一个实现,它是XPP3的基础,提供了一种低级别的XML解析机制,允许开发者逐个事件地处理XML流,而无需构建完整的DOM树,从而节省了内存。 这些库的组合使用,使得在Java应用程序...

    XStream简单应用实例

    在XStream中,最基础的操作就是序列化和反序列化。以下是一个简单的示例: ```java import com.thoughtworks.xstream.XStream; public class XStreamDemo { public static void main(String[] args) { // 创建...

    xstream-1.4.7.jar及源码;xml-pull-1.3.1.jar

    提供了所有的基础类型、数组、集合等类型直接转换的支持。 因此XML常用于数据交换、对象序列化(这种序列化和Java对象的序列化技术有着本质的区别)。 Stream对象相当Java对象和XML之间的转换器,转换过程是双向...

    xstream-1.4.7

    提供了所有的基础类型、数组、集合等类型直接转换的支持。 因此XML常用于数据交换、对象序列化. Stream对象相当Java对象和XML之间的转换器,转换过程是双向的。创建XSteam对象的方式很简单,只需要new XStream()...

    android 使用Java库xstream示例

    android 使用Java库xstream示例。这是Java解析xml文件的库,基于Java7基础上的。那么在android上也是一样适用的。我的博客:http://blog.csdn.net/qq_16064871

    xstream-1.1.3正反序列化JAVA对象

    1. 引入XStream库:在项目中引入`xstream-1.1.3.jar`,这是执行序列化和反序列化操作的基础。 2. 创建XStream实例:首先,你需要创建一个XStream的实例,通常通过`new XStream()`构造函数来完成。你可以根据需要...

    XML操作类库XStream.zip

    XStream是一个Java对象和XML相互转换的工具,很好很强大。...XStream使用起来非常简单,不需要预先生成相关的辅助类,不需要映射文件。当然,使用简单也注定了它只能处理简单结构的 XML 文件。 标签:XStream

    java解析XML所需要的完整包(包括XStream.jar,dom4j.jar和xpull/xpp.jar)

    这三个库在Java XML处理中扮演着不同的角色:XStream提供了对象到XML的序列化和反序列化,dom4j提供了强大的XML文档操作能力,而XPP3作为基础解析器,确保了高效的数据读取。在开发过程中,根据需求选择合适的库组合...

Global site tag (gtag.js) - Google Analytics