-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
であり、2番目のp
タグの親はp
と考えられます。親関数が両方に対してbody
タグを表示するのはなぜですか?
hmmmというサンプルは、解析する必要があるHTMLの一部のレクレーションです。私は無効なHTMLを扱う最良の方法が何であるかわかりません... – s2cuts
実際には、HTML :: Parserは、相互に内部で入れ子にすることができるタグを知りません。開始タグ、終了タグ、テキストなどを認識するのは、HTML :: Parserで生成されたイベントを受け取り、有効にネストされたツリーを構築するHTML :: TreeBuilderです。ほとんどのブラウザと同じように、無効なHTMLを処理しようとします。 – cjm