【问题标题】:Get/Set innerHTML in Perl HTML::TreeBuilder?在 Perl HTML::TreeBuilder 中获取/设置 innerHTML?
【发布时间】:2011-02-26 14:52:40
【问题描述】:

在 Perl HTML::TreeBuilder 中获取/设置 innerHTML?我可以得到 innerHTML 但不知道如何设置。

提前致谢。

【问题讨论】:

    标签: perl innerhtml


    【解决方案1】:

    我不确定这种方法是否会让你满意,但你可以使用pQuery 中的html($html) 方法:

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

    如果不带参数调用,这将 返回的内部 HTML 字符串 pQuery 中的第一个 DOM 元素 对象。

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

    至于为什么 pQuery 可以满足你,引用 POD:

    pQuery::DOM 大致是一种尝试 在 Perl 中复制 JavaScript 的 DOM。它 子类 HTML::TreeBuilder/HTML::Element 所以 有一些不同之处 意识到。查看 pQuery::DOM 有关详细信息的文档。

    【讨论】:

      【解决方案2】:

      我会使用 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

      【讨论】:

      • 完美运行,它甚至可以链接回 _parent。谢谢
      猜你喜欢
      • 2012-01-23
      • 1970-01-01
      • 2013-02-25
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      • 2011-09-13
      • 2012-08-26
      • 1970-01-01
      相关资源
      最近更新 更多