in reply to XML::Twig - rendering a table of data

Here's one way
#!/usr/bin/perl -- use strict; use warnings; use XML::Twig; my @data = ( { age => 12, weight => 200 }, { age => 22, weight => 100 +} ); my $table = XML::Twig::Elt->new('table'); for my $ro (@data) { my $row = XML::Twig::Elt->new('tr'); for my $aw ( @{$ro}{ 'age', 'weight' } ) { XML::Twig::Elt->new( 'td', $aw )->paste( 'last_child', $row ); } $row->paste( 'last_child', $table ); } print " <table> <tr><td>12</td><td>200</td></tr> <tr><td>22</td><td>100</td></tr> </table> --- "; $table->print('record_c'); print "\n---\n"; $table->print('indented'); __END__ <table> <tr><td>12</td><td>200</td></tr> <tr><td>22</td><td>100</td></tr> </table> --- <table> <tr><td>12</td><td>200</td></tr> <tr><td>22</td><td>100</td></tr> </table> --- <table> <tr> <td>12</td> <td>200</td> </tr> <tr> <td>22</td> <td>100</td> </tr> </table>

Replies are listed 'Best First'.
Re^2: XML::Twig - rendering a table of data
by Anonymous Monk on Jun 08, 2009 at 15:00 UTC
    This version more "forward" :)
    #!/usr/bin/perl -- use strict; use warnings; use XML::Twig; my @data = ( { age => 12, weight => 200 }, { age => 22, weight => 100 } ); my $table = XML::Twig::Elt->new('table'); $table->insert_new_elt( 'last_child' => 'tr' => ( map { $table->new( # XML::Twig::Elt 'td', $_ ) } @{$_}{ 'age', 'weight' } ), ) for @data; $table->print('record_c'); __END__ <table> <tr><td>12</td><td>200</td></tr> <tr><td>22</td><td>100</td></tr> </table>