Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

Re: Formatting XML

by valdez (Monsignor)
on Apr 01, 2007 at 17:18 UTC ( #607718=note: print w/replies, xml ) Need Help??

in reply to Formatting XML

I've been using XML::Writer for 3 years now and it works very well for my needs; it cannot convert data structures to XML, but it is perfect if you want to compose XML programmatically; its capability of pretty printing is configurable; a good module in my opinion!

use strict; use warnings; use IO::String; use XML::Writer; my $struct = { epoch => time(), events => [ { type => 'move', elements => { left => 1, up => 2 } }, { type => 'pen', elements => { down => 1, color => 'red' } }, { type => 'move', elements => { right => 3, up => 1 } }, ], }; print to_xml($struct), "\n"; exit; sub to_xml { my $input = shift; my $buffer; my $io = IO::String->new($buffer); my $xml = XML::Writer->new( OUTPUT => $io, NEWLINES => 0, DATA_MODE => 1, DATA_INDENT => 2, ); $xml->xmlDecl('UTF-8'); $xml->startTag( 'block', 'time' => $input->{epoch} ); foreach my $event (@{ $input->{events} }) { $xml->emptyTag( $event->{type}, %{ $event->{elements} } ); } $xml->endTag('block'); $xml->end(); return $buffer; }
The code above prints:
<?xml version="1.0" encoding="UTF-8"?> <block time="1175447784"> <move left="1" up="2" /> <pen color="red" down="1" /> <move right="3" up="1" /> </block>

Ciao, Valerio

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://607718]
[LanX]: quick survey ... Module::Build, ExtUtils:: ModuleMaker or Module::Starter ?
[Your Mother]: Module::Install
[Your Mother]: :P
[LanX]: Moma knows best! ;-)
[Your Mother]: I am quite aware that Module::Build is MUCH more in favor with many monks but I had trouble with it every time I tried to use it and trouble with CPAN stuff that used it too.
[Your Mother]: Take my advice with a grain of salt. I haven't done a new CPAN release in years at this point.
[LanX]: I want to author a new module for CPAN w/o complicated build structure
[LanX]: ther is also Dist::Zilla :-/
[LanX]: How to make a CPAN Module Distribution from 2002

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (7)
As of 2017-08-18 17:39 GMT
Find Nodes?
    Voting Booth?
    Who is your favorite scientist and why?

    Results (306 votes). Check out past polls.