除非我遗漏了什么,否则CPAN上的文档并没有真正解释这种行为。我整理了一些快速测试代码来说明我的问题:
#!/usr/bin/perl
use warnings;
use strict;
use HTML::TreeBuilder;
my $testHtml = "
<body>
<h1>
<p>
<p>HELLO!
</p>
</p>
</h1>
</body>";
my $parsedPage = HTML::TreeBuilder->new;
$parsedPage->parse($testHtml);
$parsedPage->eof();
my @p = $parsedPage->look_down('_tag' => 'p');
foreach (@p) {print $_->parent->tag, " : ", $_->tag, "\t", $_->as_text, "\n";}
运行上述脚本后,输出为:
body : p
body : p HELLO!
看到所有标签一个接一个地嵌套,我认为第一个p
标签h1
的父级是 ,第二个p
标签的父级是p
. 为什么父函数显示body
两者的标签?