如何使用HTML :: TokeParser获取连续标记

时间:2010-09-29 04:30:47

标签: perl

我的html看起来像这样,

<div>
   <span>Text 
       <a href="example.html">ABC</a>
       <a href="example.html">DEF</a>
       <a href="example.html">HIJ</a>
       <a href="example.html">KLM</a>
   </span>
   <p class="Time">
   09/28/10 - 03:46 PM EDT</p>
</div>

我需要遍历<a>标记之间的<span>标记,直到我从所有标记中获取文本。这会不断变化,所以我不知道会有多少<a>个标签存在。我不能做,

while ( $tag = $stream->get_tag('a') ) 

因为它浏览整个文件中的<a>标记。如果连续的<a>代码结束,我该如何停止?

1 个答案:

答案 0 :(得分:3)

while ( $tag = $stream->get_tag(qw( a /span )) ) {
  last if $tag->[0] eq '/span';
  ...
}

另一种方法是获取任何标记,如果不是<a>则停止:

while ( $tag = $stream->get_tag ) {
  last unless $tag->[0] eq 'a';
  ...
}