【问题标题】:Remove entire row from table with HTML::TableExtract使用 HTML::TableExtract 从表中删除整行
【发布时间】:2011-09-11 09:05:18
【问题描述】:

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

使用来自 CPAN 的示例代码,这是我迄今为止尝试过的:

使用 HTML::TableExtract qw(tree); 我的 $te = HTML::TableExtract->new( headers => [qw(name type members)] ); # 从文件中获取 $html_string... $te->parse($html_string); 我的 $table = $te->first_table_found(); 我的 $table_tree = $table->tree; $table_tree->row(4)->replace_content(''); 我的 $document_tree = $te->tree; 我的 $document_html = $document_tree->as_HTML; # 将 $document_html 写入文件 ...

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

有什么想法吗?

【问题讨论】:

    标签: html perl html-table


    【解决方案1】:

    你想要的是 parentdelete 方法

    请参阅HTML::ElementHTML::Element::delete 的文档

    更新

    好的,单击该复选标记并将其标记为已回答....这里是:

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

    另外,注意,您需要在 $p 周围使用 () 括号!如果您没有括号,请不要取回参考。

    对我来说,上面的 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>
    

    注意没有空的&lt;tr&gt;&lt;/tr&gt;

    【讨论】:

    • 谢谢马克。我想我没有深入到课程中。我也只是在尝试delete()。但是detachdelete 仍然在标记中留下空行&lt;tr&gt;&lt;/tr&gt;。不过还是比以前好很多。
    • 被选为答案。 @Mark Koopman 摇滚! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多