转载自:http://www.ibm.com/developerworks/cn/xml/x-xstream/
这个例子中
Writer类将类Employee以xml的形式写入文件
Reader类将xml转化为Employee类的实例。
XtreamTest 读取xml文件将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>
package com.xtream;
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;
}
}
package com.xtream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import com.thoughtworks.xstream.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("D:/workspace/TestProject/src/com/xtream/employeedata.xml");
xs.toXML(e, fs);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
}
}
package com.xtream;
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("D:/workspace/TestProject/src/com/xtream/employeedata.xml");
xs.fromXML(fis, e);
// print the data from the object that has been read
System.out.println(e.toString());
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
}
}
package com.xtream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import com.thoughtworks.xstream.*;
import com.thoughtworks.xstream.io.xml.DomDriver;
public class XtreamTest {
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("D:/workspace/TestProject/src/com/xtream/Config.xml");
xs.aliasField("datasource-name", XtreamTest.class, "datasourcename");
xs.alias("config", XtreamTest.class);
XtreamTest r = (XtreamTest) xs.fromXML(fis);
System.out.println(r.toString());
}
}