#!/usr/bin/perl -Tw
use HTML::TokeParser;
use LWP::Simple;
use XML::Simple;
use strict;
my $html = get('http://www.perlmonks.org/');
die "LWP::Simple failed to retrieve source HTML - $!" unless ($html);
my (%data, $formname, $selectname);
my $parser = HTML::TokeParser->new(\$html) || die $!;
while (my $token = $parser->get_token) {
my $type = shift @{ $token };
if ($type eq "S") {
my ($tag, $attr, $attrseq, $text) = @{ $token };
if ($tag eq "form") {
$formname = $attr->{'name'} || 'none';
} elsif ($tag eq "input") {
push (@{$data{$formname}}, {
'type' => $attr->{'type'},
'field_name' => $attr->{'name'} || 'none',
}) if defined $formname;
} elsif ($tag eq "select") {
$selectname = $attr->{'name'} || 'none';
} elsif ($tag eq "option") {
push (@{$data{$formname}}, {
'type' => "select",
'field_name' => $selectname,
'value' => $attr->{'value'}
}) if defined $selectname;
};
};
};
my ($xml) = XML::Simple->new();
print STDOUT $xml->XMLout(\%data);
exit 0;
####