GXml is an Object Oriented implementation of DOM version 4, using GObject
classes and written in Vala. Has a fast and robust serialization implementation from GObject
to XML and back, with a high degree of control. After serialization, provides a set of collections where you can get access to child nodes, using lists or hash tables.
New 0.20 release is the first step toward 1.0. It provides cleaner API and removes old unmaintained implementations.
GXml is the base of other projects depending on DOM4, like GSVG an engine to read SVG documents based on its specificacion 1.0.
GXml uses a method to set properties and fill declared containers for child nodes, accessing GObject
internals directly, making it fast. A libxml-2.0
engine is used to read sequentially each node, but is prepared to implement new ones in the future.
A new engine, still in development, tries to read nodes in a multi-threading environment, to speed up serialization.
GXml’s engine uses interfaces. That design has provided the opportunity to implement incrementally better new implementations, also holding more than one at the same time. The main ones, uses libxml-2.0
for sequential parsing to GObject
, providing a fast process; the other, use libxml-2.0
parser to its own nodes, while provides bindings to a GObject classes, but limited to the features in libxml-2.0
, limitations not present in the main implementation.
Through Vala, GObject
can exploit all its potential, without the verbose C syntax but getting all its speed advantages.
Libraries written in Vala, will help powerful applications to be created and open new opportunities on innovations, while push up GNOME main technologies to be used outside Linux. Interest a side, is Vala’s features to create binaries not depending on GLib/GObject, open new opportunities to other markets.