如何使用HTML :: Tokeparser获取下一个直接标记?

时间:2010-09-30 06:15:56

标签: perl

我正在尝试获取在特定div标记之后立即出现的标记。例如,我有html代码

<div id="example">
     <h2>Example</h2>
     <p>Hello !World</p>
</div>

我正在做以下事情,

while ( $tag = $stream->get_tag('div') ) {
    if( $tag->[1]{id} eq 'Example' ) {
        $tag = $stream->get_tag;
        $tag = $stream->get_tag;
        if ( $tag->[0] eq 'div' ) {
        ...
        }
    }
}

但这会引发错误 Can't use string ("</h2>") as a HASH ref while "strict refs" in use

如果我说,它可以正常工作 $tag = $stream->get_tag('h2'); $tag = $stream->get_tag('p');

但我不能那样,因为我需要立即获得两个标签,并验证它们是否符合我的期望。

1 个答案:

答案 0 :(得分:1)

告诉你是否发布了一个可运行的示例程序会更容易,但看起来问题是你没有意识到get_tag同时返回了start 结束标记。结束标记没有属性。开始标记返回为[$tag, $attr, $attrseq, $text],结束标记返回为["/$tag", $text]