4

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

提前致谢。

4

2 回答 2

1

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

此方法类似于著名的 JavaScript/DOM 函数 innerHTML。

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

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

至于为什么 pQuery 可能会让您满意,引用 POD 的话:

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

于 2010-06-02T06:54:47.377 回答
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

于 2010-06-04T12:40:08.300 回答