0

HTML :: Queryを使用して、各tdタグからコンテンツを引き出しています。私はそれをhtml形式で欲しいのです。今、私がそれを印刷するとき、それはほとんどの場合、クラスを2回印刷するようです。ここで何が起こっているのか考えはありますか?これが私が使用しているコードです:

for my $td ($doc->query("td")) {
$td= $td->as_HTML;
  given($td){
  when (/class=\"class1\">(.*?)<\/td>/){
          my $output = $1;
     print "$output\n";
     }

  when (/class=\"class2\">(.*?)<\/td>/){
          my $output = $1;
     print "$output\n";
     }
  when (/class=\"class3\">(.*?)<\/td>/){
          my $output = $1;
     print "$output\n";
     }
  when (/class=\"class4\">(.*?)<\/td>/){
          my $output = $1;
     print "$output\n";
     }
  }


Input:
<table>
 <tr>
  <td class="class1">question</td>
  <td class="class2">No response</td>
</tr>

<tr>
  <td class="class1">question</td>
  <td class="class2">No response</td>
</tr>

<tr>
  <td class="class3">Answer</td>
  <td class="class4">Answer is available</td>
</tr>
</table>
4

1 に答える 1

1

の呼び出しはすべての要素をquery返します。<td>が2つあるclass="class1"ので、その場合は2回一致します。

各行の内容を1行に印刷することについて質問したので、次のことを試してください。HTML::Element生のHTMLコードを照合する代わりに、からいくつかのメソッドを使用していることに注意してください。

for my $tr ($doc->query("tr")) {
  my ($td1, $td2) = $tr->contents_list();
  # Print contents of $td1 and $td2 on the same line
}
于 2012-08-02T20:50:27.563 に答える