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.
- XML::Compile::Dumper->new(%options)
- 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>
- filehandle => "IO::Handle"
- filename => FILENAME
- 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.
- package => PACKAGE
- 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¶
- Error: either filename or filehandle required
- Error: freeze can only be called once
- The various closures may have related variables, and therefore need to be
dumped in one go.
- Error: freeze needs PAIRS or a HASH
- Error: package name required
- 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.
- Error: value with $name is not a code reference
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