Scroll to navigation

XML::Compile::Dumper(3pm) User Contributed Perl Documentation XML::Compile::Dumper(3pm)

NAME

XML::Compile::Dumper - Remember precompiled XML processors

SYNOPSIS

 # create readers and writers or soap things
 my $reader = $schema->compile(READER => '{myns}mytype');
 my $writer = $schema->compile(WRITER => ...);
 # then dump them into a package
 my $dumper = XML::Compile::Dumper->new
   (package => 'My::Package', filename => 'My/Package.pm');
 $dumper->freeze(foo => $reader, bar => $writer);
 $dumper->close;
 # later, they can get recalled using
 use My::Package;
 my $hash = foo($xml);
 my $doc  = bar($doc, $xml);

DESCRIPTION

This module simplifies the task of saving and loading pre-compiled translators. Schema's can get huge, and when you are not creating a daemon to do the XML communication, you may end-up compiling and interpreting these large schemas often, just to be able to process simple data-structures.

Based on the excellent module Data::Dump::Streamer, this module helps you create standard Perl packages which contain the reader and writer code references.

WARNING: this feature was introduced in release 0.17. Using perl 5.8.8, libxml 2.6.26, XML::LibXML 2.60, and Data::Dump::Streamer 2.03, Perl complains about "PmmREFCNT_dec: REFCNT decremented below 0! during global destruction." when the tests are run. This bug can be anywhere. Therefore, these tests are disabled by default in t/TestTools.pm. If you have time, could you please run the tests with "$skip_dumper = 0;" and report the results to the author?

METHODS

Constructors

$obj->close()
Finalize the produced file. This will be called automatically if the objects goes out-of-scope.
Create an object which will collect the information for the output file. You have to specify either a "filehandle" or a "filename". A filehandle will be closed after processing.

 -Option    --Default
  filehandle  undef
  filename    undef
  package     <required>
    
The file will be written using utf8 encoding, using IO::File. If you want something else, open your filehandle first, and provide that as argument.
The name-space which will be used: it will produce a "package" line in the output.

Accessors

$obj->file()
Returns the output file-handle, which you may use to add extensions to the module.

Producers

$obj->footer($fh)
$obj->freeze(PAIRS|HASH)
Produce the dump for a group of code references, which will be made available under a normal subroutine name. This method can only be called once.
$obj->header($fh, $package)
Prints the header text to the file.

DIAGNOSTICS

The various closures may have related variables, and therefore need to be dumped in one go.
The perl module which is produced is cleanly encapsulating the produced program text in a perl package name-space. The name has to be provided.

SEE ALSO

This module is part of XML-Compile-Dumper distribution version 0.14, built on January 22, 2014. Website: http://perl.overmeer.net/xml-compile/

Other distributions in this suite: XML::Compile, XML::Compile::SOAP, XML::Compile::WSDL11, XML::Compile::SOAP12, XML::Compile::SOAP::Daemon, XML::Compile::SOAP::WSA, XML::Compile::C14N, XML::Compile::WSS, XML::Compile::WSS::Signature, XML::Compile::Tester, XML::Compile::Cache, XML::Compile::Dumper, XML::Compile::RPC, XML::Rewrite and XML::LibXML::Simple.

Please post questions or ideas to the mailinglist at http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/xml-compile . For live contact with other developers, visit the "#xml-compile" channel on "irc.perl.org".

LICENSE

Copyrights 2007-2014 by [Mark Overmeer]. For other contributors see ChangeLog.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://www.perl.com/perl/misc/Artistic.html

2021-01-08 perl v5.32.0