使用 WOX 将 Java 对象序列化为 XML






4.67/5 (6投票s)
本文介绍了如何使用 WOX 将 Java 对象序列化为 XML。它的主要特点之一是生成标准的 XML,它是语言无关的。
引言
本文介绍了如何使用 XML 中的 Web 对象 (WOX) 将 Java 对象序列化为 XML。 虽然 WOX 也是 C# 对象的序列化器,但本文仅关注 Java 对象的序列化。 WOX 可在 WOX 序列化器网站上找到。
WOX 的主要特点
下面列出了一些 WOX 的主要特点。
- 易于使用。Easy 类提供了序列化和反序列化方法。
- 简单的 XML。生成的 XML 简单,易于理解且与语言无关。
- 无需修改类。类不需要具有默认构造函数、getter 或 setter。
- 字段可见性。私有字段与其他字段一样被序列化。 WOX 序列化字段,而不管其可见性如何。
- Java 和 C# 之间的互操作性。 WOX 可以将 Java 对象序列化为 XML,并将 XML 重构回 C# 对象;反之亦然。
- 标准的 XML 对象表示。这可能允许在不同的面向对象编程语言中使用 WOX 序列化器。
- WOX 数据类型。 WOX 映射表指定了原始数据类型如何映射到 WOX 数据类型。
- 对类更改具有鲁棒性。默认值将用于新添加的字段。
- 数组。处理原始类型和对象的数组和多维数组。
- Base-64。为了提高效率,字节数组采用 base-64 编码。
- 集合类。列表和映射作为 WOX 数据类型提供。(Java 中的
ArrayList
和HashMap
;C# 中的ArrayList
和Hashtable
。) - 对象引用。使用 id/idref 处理重复和循环对象引用。
- 类和类型。这些类的对象通过它们的字符串名称保存。
- 小巧的体积。woxSerializer.jar 文件(仅包含 .class 文件)只有 25K。
使用 WOX
这是 Java 中 WOX 序列化器的快速入门。我们首先创建两个类。然后,我们将创建一些类的对象,这些对象将被序列化为 XML。接下来,我们将看一下 WOX 生成的标准 XML,最后我们将看到 XML 如何返回到 Java 对象。
public class Student {
private String name;
private int registrationNumber;
private Course[] courses;
//constructors and methods omitted
}
public class Course {
private int code;
private String name;
private int term;
//constructors and methods omitted
}
请注意,两个类中的字段都是私有的。 WOX 不考虑字段的可见性 - 无论其可见性如何,它们都将被序列化。 Java 中的 WOX 不要求类具有默认构造函数、setter 或 getter。
将 Student 对象序列化为 XML
我们首先创建一个带有一些课程的学生
Course[] courses = { new Course(6756, "XML and Related Technologies", 2),
new Course(9865, "Object Oriented Programming", 2),
new Course(1134, "E-Commerce Programming", 3) };
Student student = new Student ("Carlos Jaimez", 76453, courses);
我们现在使用 WOX 将学生序列化为 XML。我们需要指定存储 student 对象的文件的名称。
String filename = "student.xml";
Easy.save(student, filename);
Easy
类的 save
方法允许您将对象序列化为 XML 并将其存储到指定的 XML 文件中。
生成的 XML 如下所示
<object type="Student" id="0">
<field name="name" type="string" value="Carlos Jaimez" />
<field name="registrationNumber" type="int" value="76453" />
<field name="courses">
<object type="array" elementType="Course" length="3" id="1">
<object type="Course" id="2">
<field name="code" type="int" value="6756" />
<field name="name" type="string" value="XML and Related Technologies" />
<field name="term" type="int" value="2" />
</object>
<object type="Course" id="3">
<field name="code" type="int" value="9865" />
<field name="name" type="string" value="Object Oriented Programming" />
<field name="term" type="int" value="2" />
</object>
<object type="Course" id="4">
<field name="code" type="int" value="1134" />
<field name="name" type="string" value="E-Commerce Programming" />
<field name="term" type="int" value="3" />
</object>
</object>
</field>
</object>
生成的 XML 是 Student
对象的标准表示形式。每个字段都映射到一个 field
元素,每个对象都映射到一个 object
元素。另请注意,type
属性为您提供了每个字段的 WOX 数据类型。 WOX 生成的 XML 简单,易于理解且与语言无关。
从 XML 反序列化 Student 对象
我们将使用 Easy
类的 load
方法来反序列化 Student
对象。
Student newStudent = (Student)Easy.load(filename);
完成! Student
对象已从 XML 重构到 Java。
摘要
XML 中的 Web 对象是一种以简单而健壮的方式将 Java 对象序列化为 XML 的方法。 WOX 生成的 XML 旨在独立于语言且易于理解。
在本文中,我们介绍了以下内容
- 解释 WOX 的主要特点。
- 创建一个要序列化的对象。
- 通过使用
Easy.save(Object obj, String filename)
方法将对象序列化为 XML。 - 通过使用
Easy.load(String filename)
方法从 XML 反序列化对象。
此 XML 序列化器的最新版本可以在 WOX 序列化器网站上找到。
历史
- 1.0 版 - 2008 年 5 月。