Jump to content

Archived

This topic is now archived and is closed to further replies.

vietboy505

PERL: XML output to HTML table

Recommended Posts

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>
[/code]

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>
[/code]

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>');
[/code]

I just need how to fix my foreach loop. Any help?

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.