-1
documentation on CPAN并没有真正解释这种行为,除非我失去了一些东西。我已经把一些快速的测试代码来说明我的问题:HTML :: TreeBuilder的“父”功能究竟如何工作?
#!/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
标签?
嗯,这个示例只是我需要解析的一些HTML的重新创建。我不确定处理无效HTML的最佳方法是什么...... – s2cuts 2011-01-31 11:52:51