成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用 XStream 把 Java 對(duì)象序列化為 XML

開發(fā) 后端
XML 序列化用處很多,包括對(duì)象持久化和數(shù)據(jù)傳輸。但是一些 XML 序列化技術(shù)實(shí)現(xiàn)起來(lái)可能很復(fù)雜。XStream 是一個(gè)輕量級(jí)的、簡(jiǎn)單易用的開放源代碼 Java™ 庫(kù),用于將 Java 對(duì)象序列化為 XML 或者再轉(zhuǎn)換回來(lái)。了解如何設(shè)置 XStream,如何使用它序列化和逆序列化對(duì)象以及從 XML 配置文件讀取配置屬性。

使用 XStream 不用任何映射就能實(shí)現(xiàn)多數(shù) Java 對(duì)象的序列化。在生成的 XML 中對(duì)象名變成了元素名,類中的字符串組成了 XML 中的元素內(nèi)容。使用 XStream 序列化的類不需要實(shí)現(xiàn) Serializable 接口。XStream 是一種序列化工具而不是數(shù)據(jù)綁定工具,就是說(shuō)不能從 XML 或者 XML Schema Definition (XSD) 文件生成類。

和其他序列化工具相比,XStream 有三個(gè)突出的特點(diǎn):

1. XStream 不關(guān)心序列化/逆序列化的類的字段的可見性。

2. 序列化/逆序列化類的字段不需要 getter 和 setter 方法。

3. 序列化/逆序列化的類不需要有默認(rèn)構(gòu)造函數(shù)。

不需要修改類,使用 XStream 就能直接序列化/逆序列化任何第三方類。


設(shè)置開發(fā)環(huán)境

按照下列步驟下載和安裝 XStream(下載鏈接參見 參考資料):

1. 從 Eclipse 網(wǎng)站下載 Eclipse。安裝的時(shí)候?qū)⑵浣鈮旱竭x定的文件夾,本文中用 eclipse_home 表示。本文假定使用 Eclipse 3.3。

2. 從 XStream 網(wǎng)站下載最新的 XStream 穩(wěn)定版本。安裝的時(shí)候解壓到選定的文件夾,本文用 xstream_home 表示。假定使用的 XStream 版本是 1.2.2。

3. 從 Sun 網(wǎng)站下載 Java Platform, Standard Edition (J2SE) 軟件開發(fā)工具箱(SDK)。安裝到選定的文件夾,本文用 java_home 表示。假定版本為 1.5.0_05。

創(chuàng)建一個(gè) Java 項(xiàng)目

要?jiǎng)?chuàng)建一個(gè) Java 項(xiàng)目,需要選擇 File > New > Project,然后按下列步驟操作:

1. 選擇 Java > Java Project > Next(如圖 1 所示)。

 
圖 1. 新建 Java 項(xiàng)目

2. 填寫項(xiàng)目名稱并單擊 Next(如 圖 2 所示)。 

 
圖 2. 填寫項(xiàng)目名稱

3. 單擊 Finish 完成該任務(wù)(如 圖 3 所示)。

 
圖 3. 完成設(shè)置

#p#

圖 4 顯示了新建的 Java 項(xiàng)目。

 
圖 4. 新建的 Java 項(xiàng)目

添加 XStream 支持

按照下列步驟向新建的項(xiàng)目添加 XStream 庫(kù):

1. 在 Eclipse 的 Project Explorer 中選擇新建的項(xiàng)目,從 Project 菜單中選擇 Properties(如 圖 5 所示)。

 
圖 5. 添加 XStream 庫(kù)

2. 單擊 Add External JARs,從 xstream_home/lib 文件夾中選擇 xstream-1.2.2.jar。

3. 單擊 OK 結(jié)束(如 圖 6 所示)。

 
圖 6. 完成 XStream 支持的添加

圖 7 顯示了添加 XStream 支持后的項(xiàng)目。

 
圖 7. 添加的庫(kù)


序列化對(duì)象

這個(gè)簡(jiǎn)單的例子示范了如何使用 XStream 序列化/逆序列化對(duì)象,包括兩個(gè)類:Writer 和 Reader。Writer 類使用 XStream API 把 Employee 類型的對(duì)象序列化為 XML 并存儲(chǔ)到文件中(如 清單 1 所示)。

清單 1. Writer.java

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 并把數(shù)據(jù)裝入 Java 對(duì)象(如 清單 2 所示)。

#p#

清單 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 對(duì)象的結(jié)構(gòu)。

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


讀取配置文件
 
多數(shù)應(yīng)用程序都要用到一些屬性。這些屬性可能是要連接的數(shù)據(jù)源的名稱或者日志文件的位置。配置文件最適合存儲(chǔ)這類數(shù)據(jù),從而在修改這些屬性的時(shí)候不需要重新編譯應(yīng)用程序,應(yīng)用程序維護(hù)起來(lái)也更容易。下面的例子說(shuō)明如何在應(yīng)用程序中使用 XStream 從 XML 配置文件中讀取配置屬性。

XML 數(shù)據(jù)綁定通常需要從 XML 文件生成 Java 對(duì)象。使用 XStream 省略了生成對(duì)象這個(gè)步驟。只需要編寫一個(gè) Java 類將類的字段映射到希望讀取的 XML 的元素。這個(gè)例子使用的配置文件如 清單 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 對(duì)象中。

清單 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());
 }
}


結(jié)束語(yǔ)

創(chuàng)建和開發(fā)使用 XStream 的應(yīng)用程序只需要簡(jiǎn)單的幾個(gè)步驟。本文介紹如何使用 XStream 序列化/逆序列化 Java 對(duì)象和讀取配置文件,通過(guò) XStream 網(wǎng)站(教程鏈接參見 參考資料)可以進(jìn)一步了解別名、注解和轉(zhuǎn)換程序。別名和轉(zhuǎn)換程序可以讓您完全控制生成的 XML。

【編輯推薦】

  1. JavaScript解析XML的方法總結(jié)
  2. 在ASP.NET中使用Treeview控件和XML
  3. SQL Server 2005中XML操作函數(shù)詳解
責(zé)任編輯:楊鵬飛 來(lái)源: IBM
相關(guān)推薦

2010-01-04 09:40:46

F#對(duì)象

2012-04-13 10:45:59

XML

2009-03-10 13:38:01

Java序列化字節(jié)流

2010-01-08 13:25:07

ibmdwXML

2009-09-09 15:47:27

XML序列化和反序列化

2009-09-09 14:45:41

XML序列化和反序列化

2018-03-19 10:20:23

Java序列化反序列化

2009-06-14 22:01:27

Java對(duì)象序列化反序列化

2011-05-18 15:20:13

XML

2011-06-01 15:05:02

序列化反序列化

2012-02-14 10:29:02

Java

2013-02-28 10:00:43

JIDJava序列化

2013-02-27 09:58:32

JavaJID

2010-05-14 10:55:04

java對(duì)象序列化

2011-06-01 14:26:11

序列化

2009-08-25 14:59:39

C# XML序列化應(yīng)用

2009-09-09 17:14:24

XML序列化

2009-09-09 15:54:48

C# XML序列化

2009-09-09 17:10:50

C# XML序列化

2009-08-25 15:15:08

C#對(duì)象序列化應(yīng)用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品高潮呻吟久久aⅴ码 | 91在线精品视频 | 久优草| 黄色免费在线网址 | 亚洲欧美一区二区三区1000 | 毛片网络| 亚洲精品乱码8久久久久久日本 | 中文字幕精品一区二区三区在线 | 日韩在线视频一区二区三区 | 日韩免费视频 | 日韩av一区二区在线 | 亚洲日本欧美日韩高观看 | 亚洲欧美精品 | 亚洲欧美激情国产综合久久久 | 91传媒在线观看 | 久久久男人的天堂 | 在线免费观看黄色 | 奇米四色在线观看 | av大片 | 91影院 | 午夜免费影视 | 国产亚洲精品久久午夜玫瑰园 | 国产精品久久99 | 日韩免费视频 | 丁香六月激情 | 国产丝袜一区二区三区免费视频 | 亚洲aⅴ精品| 激情欧美日韩一区二区 | 久久99精品久久久久久狂牛 | 久久久国产一区二区三区四区小说 | 久久久久久中文字幕 | 亚洲精品久久久久中文字幕欢迎你 | 一级做a爰片性色毛片16 | 成人精品鲁一区一区二区 | 国产精品美女久久久久aⅴ国产馆 | 国产精品九九九 | 日本免费在线看 | 国产高潮好爽受不了了夜色 | 亚洲精彩视频在线观看 | 成年人视频在线免费观看 | 日韩视频精品 |