开发者

How can I get the next immediate tag with HTML::Tokeparser?

I'm trying to get the tags that occur immediately after a particular div tag. For e.g., I have html code

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

I'm doing the following,

while ( $tag = $stream->get_tag('div') ) {
    if( $tag->[1]{id} eq 'Example' ) {
       开发者_如何学C $tag = $stream->get_tag;
        $tag = $stream->get_tag;
        if ( $tag->[0] eq 'div' ) {
        ...
        }
    }
}

But this throws the error Can't use string ("</h2>") as a HASH ref while "strict refs" in use

It works fine if I say $tag = $stream->get_tag('h2'); $tag = $stream->get_tag('p');

But I can't have that because I need to get the immediate two tags and verify if they are what i expect them to be.


It would be easier to tell if you posted a runnable example program, but it looks like the problem is you didn't realize that get_tag returns both start and end tags. End tags don't have attributes. Start tags are returned as [$tag, $attr, $attrseq, $text], and end tags are returned as ["/$tag", $text].

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜