`

XStream 读取文件内容转换成JAVA对象

    博客分类:
  • java
阅读更多
简介
    XStream 是一个轻量级的、简单易用的开放源代码 Java™ 库,用于将 Java 对象序列化为 XML /JSON 或者再转换回来。使用它序列化和逆序列化对象以及从 XML 配置文件读取配置属性。

特点
    使用 XStream 不用任何映射就能实现多数 Java 对象的序列化。在生成的 XML 中对象名变成了元素名,类中的字符串组成了 XML 中的元素内容。使用 XStream 序列化的类不需要实现 Serializable 接口。XStream 是一种序列化工具而不是数据绑定工具,就是说不能从 XML 或者 XML Schema Definition (XSD) 文件生成类。
和其他序列化工具相比,XStream 有三个突出的特点:
1)、XStream 不关心序列化/逆序列化的类的字段的可见性。
2)、序列化/逆序列化类的字段不需要 getter 和 setter 方法。
3)、序列化/逆序列化的类不需要有默认构造函数。
不需要修改类,使用 XStream 就能直接序列化/逆序列化任何第三方类。

闲话小说,直入正题:
一、序列化对象

    这个简单的例子示范了如何使用 XStream 序列化/逆序列化对象,包括两个类:Writer 和 Reader。Writer 类使用 XStream API 把 Employee 类型的对象序列化为 XML 并存储到文件中,代码如下。

package com.samples;

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();

 //Set the properties using the setter methods
 //Note: This can also be done with a constructor.
 //Since we want to show that XStream can serialize
 //even without a constructor, this approach is used.
 e.setName("Jack");
 e.setDesignation("Manager");
 e.setDepartment("Finance");

 //Serialize the object
 XStream xs = new XStream();

 //Write to a file in the file system
 try {
 FileOutputStream fs = new FileOutputStream("c:/temp/employeedata.txt");
 xs.toXML(e, fs);
 } catch (FileNotFoundException e1) {
 e1.printStackTrace();
 }
 }
}
 


 

Reader 类读取该文件,逆序列化 XML 并把数据装入 Java 对象,代码如下。

package com.samples;
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);

 //print the data from the object that has been read
 System.out.println(e.toString());

 } catch (FileNotFoundException ex) {
 ex.printStackTrace();
 }

 }
}
 


Employee 实体对象结构如下。

package com.samples;

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;
 }
}


二、读取配置文件

    取完整的 XML 文件下面的例子说明了如何读取一个简单的 XML 文件。要读取完整的 XML 文件可能需要编写自定义的转换程序。XStream “Converter Tutorial” 网站(参见 参考资料)提供了编写转化程序的教程。 .多数应用程序都要用到一些属性。这些属性可能是要连接的数据源的名称或者日志文件的位置。配置文件最适合存储这类数据,从而在修改这些属性的时候不需要重新编译应用程序,应用程序维护起来也更容易。下面的例子说明如何在应用程序中使用 XStream 从 XML 配置文件中读取配置属性。

    XML 数据绑定通常需要从 XML 文件生成 Java 对象。使用 XStream 省略了生成对象这个步骤。只需要编写一个 Java 类将类的字段映射到希望读取的 XML 的元素。这个例子使用的配置文件如下:

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>
 


ConfigReader 类读取该配置文件并将属性加载到 Java 对象中,代码如下:

ConfigReader.java

package com.samples;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import com.thoughtworks.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() {
 // This method prints out the values stored in the member variables
 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());
 }
}


创建和开发使用 XStream 的应用程序只需要简单的几个步骤。本文介绍如何使用 XStream 读取文件生成JavaBean对象,JavaBean与XML/JSON之间转换,请看下文。

原文地址:http://www.ibm.com/developerworks/cn/xml/x-xstream/
分享到:
评论

相关推荐

    利用XStream读写xml文件

    通过本篇内容的学习,我们了解了XStream的基本原理以及如何使用它来读写XML文件。XStream不仅简化了XML与Java对象之间的转换过程,还提高了开发效率。在实际项目中,合理利用XStream可以有效地管理复杂的数据结构。

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

    - **序列化**: XStream可以将一个Java对象转换成XML字符串,这个过程叫做对象的序列化。通过简单的API调用,开发者可以将复杂的Java对象结构转化为易于理解和处理的XML格式。 - **反序列化**: 反之,它也能将XML...

    Excel列表转化成java对象

    综上所述,"Excel列表转化成java对象"是一个涉及文件读取、数据解析、对象映射和集合操作的综合过程。Java提供了丰富的库和工具,如Apache POI、OpenCSV和JAXB,来支持这一过程,使得在Java应用中处理Excel和CSV数据...

    使用XStream是实现XML与Java对象的转换(6)--持久化

    5. **从文件加载**:从磁盘读取XML并反序列化回对象,我们需要先读取文件内容,然后调用`fromXML()`。例如,`MyObject myObject = (MyObject) xstream.fromXML(new FileReader("output.xml"))`将从“output.xml”...

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

    虽然具体的文件列表中只有一个名为“使用XStream是实现XML与Java对象的转换(5)--Object Stream.docx”的文档,我们无法直接查看其内容,但可以合理猜测文档会涵盖以下知识点: 1. XStream库的基本介绍和安装 2. XML...

    xml解析及使用XStream实现javaBean与xml之间的转换

    在`xmlAnalysis`文件夹中,可能包含了一个简单的Java程序,演示了如何使用DOM、SAX、StAX和XStream解析XML文件,并展示了XStream如何在JavaBean与XML之间进行转换。你可以运行这些代码,观察输出结果,以加深理解。...

    使用xstream进行java类与xml文件互转解析--代码

    为了将一个Java对象转换成XML,首先需要创建该对象实例,然后使用XStream的`toXML()`方法: ```java import com.thoughtworks.xstream.XStream; public class Person { private String name; private int age; ...

    使用 XStream 把 Java 对象序列化为 XML

    2. **创建对象**:通过调用`fromXML()`方法,XStream将XML数据转换回相应的Java对象。例如: ```java YourClass yourObject = (YourClass) xstream.fromXML(xmlString); ``` **自定义转换** XStream提供了一些...

    XStream4JavaDemo演示源码

    ` 这一步将Java对象转换成XML字符串。XStream会根据对象的字段和它们的值生成相应的XML结构。 4. **XML到对象**:`MyObject myObject = (MyObject) xstream.fromXML(xml);` 这里,XStream会读取XML字符串,并根据...

    XStream jar包

    例如,它可以轻松地将Java对象写入文件或流,然后再读取回来,这对于备份、迁移或者跨进程通信都非常有用。同时,XStream也支持与XML Schema(XSD)的集成,可以生成符合特定模式的XML文档。 在项目中使用XStream时...

    使用XStream 多集合生成xml

    在这个场景中,"使用XStream多集合生成xml"是一个关键的技术点,它涉及到如何将多个集合类的对象转换成XML文档。以下是对这一主题的详细说明。 首先,我们需要了解XStream的基本用法。XStream的核心是`XStream`类,...

    XStream使用方法总结-对象-转换.txt

    XStream是一款强大的Java库,主要用于实现Java对象与XML文档之间的相互转换。本文将详细介绍XStream的基本用法、配置选项以及如何利用它来进行对象到XML的序列化和反序列化操作。 #### 一、XStream简介 XStream是...

    XStream对象序列化

    在`Reader`类中,可以读取之前保存的XML文件,然后使用XStream将XML转换回`Employee`对象: ```java XStream xstream = new XStream(); Employee employee = (Employee) xstream.fromXML(new File("employee.xml...

    xstream-1.4.2.jar

    在配置文件中,复杂的配置对象可以用XML表示,XStream则负责读写这些配置。 总之,XStream是一个强大且灵活的工具,对于处理Java对象与XML之间的转换,它提供了简洁、高效的解决方案。无论你是新手还是经验丰富的...

    XStream+1.3(xstream).CHM

    通过简单的API,开发者可以快速地将复杂的Java对象结构转换成XML文档,同时也能将XML解析回对应的Java对象。这种能力使得XStream成为许多项目中的首选工具,尤其是在需要处理XML数据的Web服务和分布式系统中。 在...

    使用XStream, java Object 与xml之间的转换,以及写入SD卡

    XStream是一款强大的库,它使得Java对象与XML之间的转换变得简单易行。本篇文章将深入探讨如何利用XStream进行Java对象到XML的转换,并将其存储到SD卡上。 首先,XStream的核心功能在于它可以将Java对象直接转换为...

    JAVA对象与XML互转

    在Java编程中,将对象转换为XML以及将XML数据转换回对象是常见的需求,尤其是在处理配置文件、数据交换或持久化存储时。本篇将详细探讨这个主题,讲解如何使用Java进行XML与对象的互转。 一、Java对象转XML 1. **...

    xstream-1.3.1

    XStream是一个Java库,能够将Java对象转换为XML,反之亦然。这个过程被称为序列化和反序列化。在标题"XStream-1.3.1"中,我们看到的是XStream的一个特定版本——1.3.1。这个版本可能包含了对之前版本的改进、修复了...

    XStream_jar.zip

    在持久化方面,XStream 可以帮助将对象树直接写入文件或流,然后在需要时读取。这使得数据存储变得简单而高效。例如,你可以将对象序列化为一个 XML 文件,然后在下次启动应用时重新加载: ```java // 序列化到文件...

Global site tag (gtag.js) - Google Analytics