Jump to content


Photo

PERL: XML output to HTML table


  • Please log in to reply
No replies to this topic

#1 vietboy505

vietboy505
  • Members
  • PipPip
  • Member
  • 16 posts

Posted 06 March 2006 - 03:49 PM

I want my PErl to output the content of XML to HTML table like this:

<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
<?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
#!/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?




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users