Получить значения атрибутов с помощью HTML :: PullParser - PullRequest
0 голосов
/ 17 января 2019

Я написал фрагмент кода Perl для анализа HTML-файла и перечисления его тегов с их атрибутами:

my $lo_parser = HTML::PullParser->new(
    file => $gs_html_doc,
    start => 'event, tagname, @attr',
    ) or die "Error: $!";
$lo_parser->unbroken_text(1);

while (my $iY_token = $lo_parser->get_token)
{
    my $ls_event = $iY_token->[0]; # always "start"
    my $ls_name = $iY_token->[1];
    my @ly_attr = $iY_token->[2];

    print "$ls_name:\n";
    foreach (0 .. $#ly_attr)
    {
        print "- $ly_attr[$_]\n";
    }
    print "\n";
}

Работает нормально, но я не знаю, как получить ЗНАЧЕНИЯ различных атрибутов. Ни один из сайтов, которые я нашел о HTML :: PullParser не дал мне ответа.

Может кто-нибудь помочь, пожалуйста?

Большое спасибо заранее.

1 Ответ

0 голосов
/ 18 января 2019

Как сказано в комментариях, я не нашел решения заставить парсер работать при объявлении с @attr.

И все же, с немного другим подходом, я наконец получил то, что хочу.

my $lo_parser = HTML::PullParser->new(
    file => $gs_html_doc,
    start => 'event, tagname, attr',
    ) or die "Error: $!";
$lo_parser->unbroken_text(1);

while (my $iY_token = $lo_parser->get_token)
{
    my $ls_event = $iY_token->[0]; # always "start"
    my $ls_name = $iY_token->[1];
    my $lH_attr = $iY_token->[2];

    print "$ls_name:\n";
    foreach (keys %{$lH_attr})
    {
        print "- $_ = $lH_attr->{$_} = \n";
    }
    print "\n";
}
...