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

4

如何在Perl HTML::TreeBuilder中获取/设置innerHTML?我能够获取innerHTML但不知道如何进行设置。

提前感谢。

2个回答

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>

是的,我看过手册


完美运行,它甚至可以链接回_parent。谢谢。 - iavian

1

我不确定这种方法是否能满足您的需求,但您可以使用html($html)方法来自pQuery

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

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

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

至于为什么pQuery可能会满足您的需求,引用POD的话:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接