NAME

Data::DumpXML - Dump arbitrary data structures as XML

SYNOPSIS

use Data::DumpXML qw(dump_xml);
$xml = dump_xml(@list)

DESCRIPTION

This module provide a single function called dump_xml() that takes a list of something as argument and produce a string as result.

The string returned is an XML document that represents any perl data structure passed in. The following DTD is used:

<!DOCTYPE data [
 <!ENTITY % scalar "undef | str | ref | alias">

 <!ELEMENT data (%scalar;)*>
 <!ELEMENT undef EMPTY>
 <!ELEMENT str (#PCDATA)>
 <!ELEMENT ref (%scalar; | array | hash | glob | code)>
 <!ELEMENT alias EMPTY>
 <!ELEMENT array (%scalar;)*>
 <!ELEMENT hash  (key, (%scalar;))*>
 <!ELEMENT key (#PCDATA)>
 <!ELEMENT glob EMPTY>
 <!ELEMENT code EMPTY>

 <!ENTITY % stdattlist 'id       ID             #IMPLIED
                        class    CDATA          #IMPLIED'>
 <!ENTITY % encoding   'encoding (plain|base64) "plain"'>

 <!ATTLIST undef %stdattlist;>
 <!ATTLIST ref %stdattlist;>
 <!ATTLIST undef %stdattlist;>
 <!ATTLIST array %stdattlist;>
 <!ATTLIST hash %stdattlist;>
 <!ATTLIST glob %stdattlist;>
 <!ATTLIST code %stdattlist;>

 <!ATTLIST str %stdattlist; %encoding;>
 <!ATTLIST key %encoding;>

 <!ATTLIST alias ref IDREF #IMPLIED>
]>

As an example of the XML documents producted; the following call:

$a = bless [1,2], "Foo";
$a->[2] = \$a;
$b = $a;
dump_xml($a, $b);

will produce:

<?xml version="1.0" encoding="US-ASCII"?>
<data>
 <ref id="r1">
  <array class="Foo" id="r2">
   <str>1</str>
   <str>2</str>
   <ref>
    <alias ref="r1"/></ref></array></ref>
 <ref>
  <alias ref="r2"/></ref></data>

If dump_xml() is called in void context, then the dump will be printed on STDERR instead of being returned. For compatibility with Data::Dump there is also an alias for dump_xml() simply called dump().

You can set the variable $Data::DumpXML::INDENT to control indenting before calling dump_xml(). To suppress indenting set it as "".

The Data::DumpXML::Parser is a class that can restore datastructures dumped by dump_xml().

BUGS

Class names with 8-bit characters will be dumped as Latin-1, but converted to UTF-8 when restored by the Data::DumpXML::Parser.

The content of globs and subroutines are not dumped. They are restored as the strings; "** glob **" and "** code **".

LVALUE and IO objects are not dumped at all. They will simply disappear from the restored data structure.

SEE ALSO

Data::DumpXML::Parser, XML::Parser, XML::Dumper, Data::Dump

AUTHORS

The Data::DumpXML module is written by Gisle Aas <gisle@aas.no>, based on Data::Dump.

The Data::Dump module was written by Gisle Aas, based on Data::Dumper by Gurusamy Sarathy <gsar@umich.edu>.

Copyright 1998-2000 Gisle Aas.
Copyright 1996-1998 Gurusamy Sarathy.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.