Perl HTML :: TreeBuilderでinnerHTMLを取得/設定しますか?私はinnerHTMLを取得できましたが、設定方法がわかりません。
前もって感謝します。
このアプローチがあなたを満足させるかどうかはわかりませんが、 pQueryからhtml($html)メソッドを使用できます:
このメソッドは、有名な JavaScript/DOM 関数の innerHTML に似ています。
引数なしで呼び出すと、pQuery オブジェクトの最初の DOM 要素の内部 HTML 文字列が返されます。
HTML 文字列引数を指定して呼び出すと、pQuery オブジェクト内のすべての DOM 要素の内部 HTML が設定されます。
pQuery があなたを満足させる理由については、POD から引用します。
pQuery::DOM は、おおよそ、JavaScript の DOM を Perl で複製しようとする試みです。HTML::TreeBuilder/HTML::Element をサブクラス化するため、注意すべきいくつかの違いがあります。詳細については、pQuery::DOM のドキュメントを参照してください。
私は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