在Perl HTML :: TreeBuilder中获取/设置innerHTML?

时间:2010-06-02 01:19:56

标签: perl innerhtml

在Perl HTML :: TreeBuilder中获取/设置innerHTML?我可以获得innerHTML,但不知道如何设置。

先谢谢。

2 个答案:

答案 0 :(得分:1)

我不确定这种方法是否会让您满意,但您可以使用html($html)中的pQuery方法:

  

这种方法类似于着名的   JavaScript / DOM函数innerHTML。

     

如果没有参数调用,这将会   返回内部HTML字符串   pQuery中的第一个DOM元素   对象

     

如果使用HTML字符串调用   参数,这将设置内部HTML   pQuery中的所有DOM元素   对象

至于为什么pQuery可能满足你,引用POD:

  

pQuery :: DOM大致是尝试   在Perl中复制JavaScript的DOM。它   子类   HTML :: TreeBuilder / HTML :: Element so   有一些差异   意识到。请参阅pQuery :: DOM   有关详细信息的文档。

答案 1 :(得分:1)

我会使用pQuery,但这样可以使用

#!/usr/bin/perl --
use strict;
use warnings;
use HTML::TreeBuilder;

my $html = <<'__HTML__';
<div id="target">old <B>i</B><I>n</I>ner</div>
__HTML__

{
    my $t = HTML::TreeBuilder->new_from_content($html);

    print $t->as_HTML('<>&',' ',{}), "\n";

    my $target = $t->look_down( id => 'target' );
    $target->delete_content;
    $target->push_content(
        HTML::TreeBuilder->new_from_content(
            "<B>NEW</B>"
        )->look_down(qw!_tag body!)->detach_content
    );

    print $t->as_HTML('<>&',' ',{}), "\n";

}
__END__
<html>
 <head>
 </head>
 <body>
  <div id="target">old <b>i</b><i>n</i>ner</div>
 </body>
</html>

<html>
 <head>
 </head>
 <body>
  <div id="target"><b>NEW</b></div>
 </body>
</html>

是的,我是RTFM