WOX―an xml serializer for java or c# objects
WOX可以将对象序列化为XML的流或文件,也可以将XML流或文件反序列化为对象!可以非常方便的实现用XML来表示一个对象里面的字段情况。同时支持JAVA和C#。主页在:http://woxserializer.sourceforge.net/
XML的跨平台、良好的网络间传送特性,已经是家喻户晓了。WOX的其中目的也在于此,当在两个不同平台的系统间(例如一个为基于java开发的系统,一个是基本c#开发的系统),如果要通过网络在这两个系统间传送对象,并在各自的系统中重构这个对象时。XML是一个很好的桥梁。要实现对象与XML间的序列与反序列,使用WOX是一个很好的解决方案。
WOX有以下一些主要特性:
n 非常容易使用。Easy这个类提供了序列与反序列化。
n 生成的XML是简单易懂,并与语言无关的。
n 支持集合类。
可能会用到WOX的场合:
n 通过网络传送对象,并在接收处重构这个对象。
n 存储一个对象,WOX可以非常容易的实现对象的持久化。
n 以标准化的格式去表现一个对象。
n 必须工作于JAVA与C#的对象间。
官方的网站上的例子:
Student and Course 类
//Java classes
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
}
Student对象序列化为XML
首先创建对象
//Java
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);
//C#
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);
使用Easy类中的静态方法save,实现序列化。
//Java
String filename = "student.xml";
Easy.save(student, filename);
序列化对象后的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>