使用HTML :: TableExtract从表中删除整行

时间:2011-06-09 03:17:20

标签: html perl html-table

有没有办法从HTML::TableExtract的HTML表格中删除整行(html标记全部)?

使用CPAN中的示例代码,这是我到目前为止所尝试的内容:

use HTML::TableExtract qw(tree);

my $te = HTML::TableExtract->new( headers => [qw(name type members)] );

# get $html_string out of a file...

$te->parse($html_string);

my $table = $te->first_table_found();
my $table_tree = $table->tree;
$table_tree->row(4)->replace_content('');
my $document_tree = $te->tree;
my $document_html = $document_tree->as_HTML;

# write $document_html to a file ...

现在,顾名思义,行$table_tree->row(4)->replace_content('');中的'replace_content()'会删除第4行的内容,但该行本身仍保留在标记中。我需要删除标签,并删除其间的所有内容。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您想要的是parentdelete方法

请参阅HTML::ElementHTML::Element::delete

的文档

更新

好的,点击该复选标记并将其标记为已解答....这是:

my($p) = $table_tree->row(4)->parent();
$p->delete;

另外,注意,你需要$ p周围的()parens!如果你没有parens不回来参考。

对我来说,使用上面的Perl代码处理这个HTML,

<table>
   <tr><td>name</td><td>type</td><td>members</td></tr>
   <tr><td>row1</td><td>row1</td> <td>row1</td></tr>
   <tr><td>row2</td><td>row2</td> <td>row2</td></tr>
   <tr><td>row3</td><td>row3</td> <td>row3</td></tr>
   <tr><td>row4</td><td>row4</td> <td>row4</td></tr>
</table>

我是打印$document_html

的结果
<table>
   <tr><td>name</td><td>type</td><td>members</td></tr>
   <tr><td>row1</td><td>row1</td><td>row1</td></tr>
   <tr><td>row2</td><td>row2</td><td>row2</td></tr>
   <tr><td>row3</td><td>row3</td><td>row3</td></tr>
</table>

请注意,没有空的<tr></tr>