.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "MKDoc::XML::Dumper 3pm" .TH MKDoc::XML::Dumper 3pm "2004-10-06" "perl v5.10.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" MKDoc::XML::Dumper \- Same as Data::Dumper, but with XML .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& use MKDoc::XML::Dumper; \& use Test::More \*(Aqno_plan\*(Aq; \& \& my $stuff = [ qw /foo bar baz/, [], { hello => \*(Aqworld\*(Aq, yo => \e\e\*(Aqboo\*(Aq } ]; \& my $xml = MKDoc::XML::Dumper\->perl2xml ($stuff); \& my $stuff2 = MKDoc::XML::Dumper\->xml2perl ($xml); \& is_deeply ($stuff, $stuff2); # prints \*(Aqok\*(Aq .Ve .SH "SUMMARY" .IX Header "SUMMARY" MKDoc::XML::Dumper provides functionality equivalent to Data::Dumper except that rather than serializing structures into a Perl string, it serializes them into a generic \s-1XML\s0 file format. .PP Of course since \s-1XML\s0 cannot be evaled, it also provides a mechanism for undumping the xml back into a perl structure. .PP MKDoc::XML::Dumper supports scalar references, hash references, array references, reference references, and litterals. It also supports circular structures and back references to avoid creating unwanted extra copies of the same object. .PP That's all there is to it! .SH "API" .IX Header "API" .ie n .SS "my $xml = MKDoc::XML::Dumper\->perl2xml ($perl);" .el .SS "my \f(CW$xml\fP = MKDoc::XML::Dumper\->perl2xml ($perl);" .IX Subsection "my $xml = MKDoc::XML::Dumper->perl2xml ($perl);" Turns \f(CW$perl\fR into an \s-1XML\s0 string. For instance: .PP .Vb 2 \& my $perl = [ qw /foo bar baz/, { adam => \*(Aqapple\*(Aq, bruno => \*(Aqberry\*(Aq, chris => \*(Aqcherry\*(Aq } ]; \& print MKDoc::XML::Dumper\->perl2xml ($perl);\*(Aq .Ve .PP Will print something like: .PP .Vb 10 \& \& \& foo \& \& \& bar \& \& \& baz \& \& \& \& \& berry \& \& \& apple \& \& \& cherry \& \& \& \& .Ve .PP As you can see, every object has an id. This allows for backreferencing, so: .PP .Vb 3 \& my $perl = undef; \& $perl = \e$perl; \& print MKDoc::XML::Dumper\->perl2xml ($perl);\*(Aq .Ve .PP Prints something like: .PP .Vb 3 \& \& \& .Ve .PP For the curious, these identifiers are computed using some perl black magic: .PP .Vb 1 \& my $id = 0 + $reference; .Ve .ie n .SS "my $perl = MKDoc::XML::Dumper\->perl2xml ($xml);" .el .SS "my \f(CW$perl\fP = MKDoc::XML::Dumper\->perl2xml ($xml);" .IX Subsection "my $perl = MKDoc::XML::Dumper->perl2xml ($xml);" Does the exact reverse operation as \fIxml2perl()\fR. .SH "AUTHOR" .IX Header "AUTHOR" Copyright 2003 \- MKDoc Holdings Ltd. .PP Author: Jean-Michel Hiver .PP This module is free software and is distributed under the same license as Perl itself. Use it at your own risk. .SH "SEE ALSO" .IX Header "SEE ALSO" MKDoc::XML::Decode MKDoc::XML::Encode