清单 2. Reader.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(); }
} }
清单 3 显示了 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; } }
读取配置文件 多数应用程序都要用到一些属性。这些属性可能是要连接的数据源的名称或者日志文件的位置。配置文件最适合存储 这类数据,从而在修改这些属性的时候不需要重新编译应用程序,应用程序维护起来也更容易。下面的例子说明如何在应用程序中使用 XStream 从 XML 配置文件中读取配置属性。
XML 数据绑定通常需要从 XML 文件生成 Java 对象。使用 XStream 省略了生成对象这个步骤。只需要编写一个 Java 类将类的字段映射到希望读取的 XML 的元素。这个例子使用的配置文件如 清单 4 所示。
清单 4. 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>
清单 5 显示的 ConfigReader 类读取该配置文件并将属性加载到 Java 对象中。
清单 5. 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 序列化/逆序列化 Java 对象和读取配置文件,通过 XStream 网站(教程链接参见 参考资料)可以进一步了解别名、注解和转换程序。别名和转换程序可以让您完全控制生成的 XML。
引用自:http://java.chinaitlab.com/XMLBeans/777336_3.html