使用HTML :: PullParser获取属性值

时间:2019-01-17 16:00:18

标签: perl parsing perl-module

我写了一段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 :(得分:1)

正如评论中所说,当用“ @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";
}