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 は、おおよそ、JavaScript の DOM を Perl で複製しようとする試みです。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 に答える