Long 期坚持
“Long 期持久性”是一个模型,使 bean 可以以 XML 格式保存。
可以在XML Schema和Using XMLEncoder中找到有关 XML 格式以及如何实现非 bean 的 Long 期持久性的信息。
编码器和解码器
分配了XMLEncoder类以编写用于表示Serializable
对象的文本表示形式的输出文件。以下代码片段是以 XML 格式编写 Java bean 及其属性的示例:
XMLEncoder encoder = new XMLEncoder(
new BufferedOutputStream(
new FileOutputStream("Beanarchive.xml")));
encoder.writeObject(object);
encoder.close();
XMLDecoder类读取使用 XMLEncoder 创建的 XML 文档:
XMLDecoder decoder = new XMLDecoder(
new BufferedInputStream(
new FileInputStream("Beanarchive.xml")));
Object object = decoder.readObject();
decoder.close();
XML 是什么?
XML bean 归档文件具有自己的特定语法,该语法包括以下标记来表示每个 bean 元素:
-
XML 前言,用于描述 XML 版本和编码类型
-
一个
<java>
标记以体现 bean 的所有对象元素 -
<object>
标记,代表从其序列化形式重建对象所需的一组方法调用
<object class="javax.swing.JButton" method="new">
<string>Ok</string>
</object>
or statements
<object class="javax.swing.JButton">
<void method="setText">
<string>Cancel</string>
</void>
</object>
-
标签以定义适当的原始类型:
-
<boolean>
-
<byte>
-
<char>
-
<short>
-
<int>
-
<long>
-
<float>
-
<double>
-
<int>5555</int>
- <
class
> 标记表示 Class 的实例。
<class>java.swing.JFrame</class>
- <
array
> 标签定义数组
<array class="java.lang.String" length="5">
</array>
以下代码表示将为SimpleBean
组件生成的 XML 存档:
<?xml version="1.0" encoding="UTF-8" ?>
<java>
<object class="javax.swing.JFrame">
<void method="add">
<object class="java.awt.BorderLayout" field="CENTER"/>
<object class="SimpleBean"/>
</void>
<void property="defaultCloseOperation">
<object class="javax.swing.WindowConstants" field="DISPOSE_ON_CLOSE"/>
</void>
<void method="pack"/>
<void property="visible">
<boolean>true</boolean>
</void>
</object>
</java>