Получить / установить innerHTML в Perl HTML :: TreeBuilder? - PullRequest
4 голосов
/ 02 июня 2010

Получить / установить innerHTML в Perl HTML :: TreeBuilder? Я мог бы получить innerHTML, но не знаю, как установить.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 04 июня 2010

Я бы использовал 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

1 голос
/ 02 июня 2010

Я не уверен, что этот подход вас удовлетворит, но вы можете использовать метод html ($ html) из pQuery :

Этот метод похож на знаменитый Функция JavaScript / DOM innerHTML.

Если вызывается без аргументов, это будет вернуть внутреннюю строку HTML первый элемент DOM в pQuery объект.

Если вызывается со строкой HTML аргумент, это установит внутренний HTML всех элементов DOM в pQuery объект.

Насколько pQuery может вас удовлетворить, приведу цитату из POD:

pQuery :: DOM - это попытка дублировать DOM JavaScript в Perl. Это подклассы HTML :: TreeBuilder / HTML :: Элемент так Есть несколько отличий в курсе. Смотрите pQuery :: DOM документация для деталей.

...