Simple 是什嗎?
Simple 是一個 Java 架構,用於簡化序列化和反序 列化 XML 的過程。使用 Simple,開發人員可以簡化(名字由此而來)將簡單老 Java 對象(POJO)轉換成 XML 文檔的過程 — 即所謂的序列化 (serialization)過程。Simple 也可促進相反的過程:開發人員可以將 XML 文 檔轉換成 POJO — 即所謂的還原序列化(deserialization)過程。
Simple 名副其實,它使用註解來支援序列化和還原序列化過程。根據相應的 XML 文檔應該如何出現,對 POJO 進行註解。一些欄位被註解為屬性,另一些字 段被註解為元素。類通常被註解為根項目。在序列化過程中,該架構處理冗長的 解釋註解和產生相應 XML 文檔的過程。無足為奇,在 XML 文檔被轉換成 POJO 的還原序列化過程中,註解也會被解釋。
使用 Simple 有幾個優勢。首先, 它促進快速應用程式開發。Simple 是如此簡單,它支援開發人員快速實現健壯的 、使用 XML 序列化和還原序列化的應用程式,無需完成長長的學習曲線以及付出繁 重的開發勞動。
其次,Simple 不需要配置。前面已經提到,Simple 使用 註解。這些註解取代了基於 XML 的設定檔(其他架構一般都有這樣的設定檔 )。
最後,Simple 只讓使用它的應用程式增加少量的記憶體佔用。Java 歸 檔(Java Archive,JAR)檔案只有 239 KB。Simple 也不依賴於一系列其他 JAR 檔案,而其他架構則通常不是這樣的。
獲得 Simple
必須首先下載 Simple,然後才能使用它。但是關於這個過程,既有好訊息,也有壞訊息。好消 息是,歸檔檔案是免費的。壞訊息是,歸檔檔案是 .tar.gz 格式的。所以,您若 是想用 Microsoft® Windows® 本機歸檔檔案解壓程式來開啟這個歸檔文 件的話,是會失望的。需要使用 WinZip 或其他類似的歸檔工具。
解壓檔案之後,注意在 jar 目錄中有一個 JAR 檔案(simple-xml-2.1.4.jar )。在編譯時間和運行時,類路徑中需要有這個 JAR 檔案。
序列化
將一個對象序列化成一個 XML 文檔是一個相當簡單的過程。涉及到兩步:
建立具有適當註解的 POJO。
編寫不多的幾行代碼,用於真正執行序列化過程。
為了本文目的,我們來回顧一下熟悉的魚餌主題(當然只有讀過我的文章的讀 者熟悉)。所以,清單 1 是一個表示魚餌資訊的 POJO。
清單 1. Lure 類
@Root
public class Lure {
@Attribute
private String type;
@Element
private String company;
@Element
private int quantityInStock;
@Element
private String model;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public int getQuantityInStock() {
return quantityInStock;
}
public void setQuantityInStock(int quantityInStock) {
this.quantityInStock = quantityInStock;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
}
這個 POJO 真的沒有什麼複雜的東西。其唯一可能初看起來不熟悉的部分是注 解。同樣,這是故意的。回想一下,Simple 架構的目的就是實現它名字的寓意。
@Root 註解描述 XML 文檔的根項目。因為每個 XML 文檔都需要一個根項目, 所以一定要記得包含這個元素。
type 欄位上面的 @Attribute 註解將該欄位識別為屬性。該屬性被作為一個 屬性添加到根項目。
其餘註解是 @Element 註解。這些註解位於以下 3 個欄位的正上方:company 、quantityInStock 和 model。這些欄位代表 XML 文檔中的元素。
根據 JavaBean 標準,該 POJO 的其餘部分由訪問器(accessor)方法和 修 改器(mutator)方法組成。
既然 POJO 已經建立完成了,下面就該編寫序列化代碼了。參見 清單 2 中的 該代碼。
清單 2. LureExample 類
public static void main(String[] args) {
try {
Serializer serializer = new Persister();
Lure lure = new Lure();
lure.setCompany("Donzai");
lure.setModel("Marlin Buster");
lure.setQuantityInStock(23);
lure.setType("Trolling");
File result = new File("lure.xml");
serializer.write(lure, result);
} catch (Exception e) {
e.printStackTrace();
}
}