rakhimov/scram

Replace libxml++ w/ libxml2

rakhimov opened this issue · 1 comments

XML parser facilities are only needed to process MEF and config files.
SCRAM does not need all the bells & whistles provided by libxml++.
It should be possible to replace libxml++
with a custom minimal adapter around libxml2,
providing only the needed functionality.
This would free SCRAM from libxml++ and its dependencies
(glib, glibmm, libsigc++).

Moreover, the performance should improve slightly
if the custom wrapper does not manage wrapper node databases
and XML modification as libxml++ does.

The codebase needs to be updated for the new libxml++3 API anyway,
so this is a good excuse for creating the custom adaptor and dropping libxml++.

Required features:

  • DOM parser & read-only document (from file & stream)
  • XInclude processing (automatic w/ libxml2)
  • RelaxNG validator
  • Element nodes only (w/ attribute & text values)

libxml++ is fully replaced by libxml2 custom wrapper,
but error message construction is not handled.
This is delegated to #219 .