在Perl HTML :: TreeBuilder中获取/设置innerHTML?我可以获得innerHTML,但不知道如何设置。
先谢谢。
答案 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