Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations strongm on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

XML output to HTML table

Status
Not open for further replies.

vietboy505

Technical User
Feb 20, 2006
56
US
I want my PErl to output the content of XML to HTML table like this:

Code:
<table border="1">
<tr>
<th>Type</th>
<th>Contact</th>
</tr>

<tr>
<td>Work</td>
<td><a href="../search.asp?ID=123456">John Doe</a></td>
</tr>

<tr>
<td></td>
<td><a href="../search.asp?ID=05789">Jack Doe</a></td>
</tr>

<tr>
<td>Relative</td>
<td><a href="../search.asp?ID=654321">Jane Doe</a></td>
</tr>

</table>

address.xml
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- Comment -->

<Address>
  <Work>
    <JohnDoe>
      <name>John Doe</name>
      <email>john@doe.com</email>
      <phone>555-555-5555</phone>
      <pager>6666666666</pager>
      <id>123456</id>
    </JohnDoe>
    <JackDoe>
      <name>Jack Doe</name>
      <email>jack@doe.com</email>
      <phone>666-666-6666</phone>
      <pager>7777777777</pager>
      <id>05789</id>
    </JackDoe>
  </Work>
  <Relative>
    <JaneDoe>
      <name>Jane Doe</name>
      <email>jane@doe.com</email>
      <phone>444-444-4444</phone>
      <pager>8888888888</pager>
      <id>654321</id>
    </JaneDoe>
  </Relative>
</Address>

address2.pl
Code:
#!/usr/local/bin/perl

print "Content-Type: text/html\n\n";
use XML::Simple;
use Data::Dumper;

my $ref = XMLin('address.xml');

print('<table border="1">\n
<tr>\n
<th>Type</th>\n
<th>Contact</th>\n
</tr>\n');

foreach my $type (qw(Work Relative)) {
   foreach my $person (keys %{$ref->{$type}}) {
   	my $id=$ref->{$type}->{$person}->{id};
   	my $name=$ref->{$type}->{$person}->{name};
      print("<a href='../search.asp?ID=$id'>$name</a>");
   }
}
print('</table>');

I just need how to fix my foreach loop. Any help?
 
How about something like this?
Code:
use XML::Simple;
my $xs = new XML::Simple;
my $ref = $xs->XMLin('address.xml');

print('<table border="1">
<tr>
<th>Type</th>
<th>Contact</th>
</tr>', "\n");

foreach my $type (qw/Work Relative/) {
    foreach my $person (keys %{$ref->{$type}}) {
        print_record($type,
                     $ref->{$type}->{$person}->{'id'},
                     $ref->{$type}->{$person}->{'name'});
    }
}

print "\n</table>\n";

sub print_record {
    my ($type, $id, $name) = @_;
    print "\n<tr>\n<td>$type</td>\n";
    print '<td><a href="../search.asp?ID=' . $id . '">';
    print "$name</a></td>\n</tr>\n"
}
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top