作为html::TagParser中的html

作为html::TagParser中的html,html,perl,Html,Perl,我在用perl 我想问一下是否有 $value->as_html() 来自HTML::TagParser中的HTML::TreeBuilder 我提取了HTML::TagParser中需要的标记,但现在唯一的选项是: $value->innerText(); 它只给我没有HTML标记的文本 或者我可以用某种方式将HTML::TagParser的结果与HTML::TreeBuilder连接起来,然后像这样使用HTML标记?HTML::TagParser不仅读取元素内容。它还保留每个

我在用perl

我想问一下是否有

$value->as_html()
来自HTML::TagParser中的HTML::TreeBuilder

我提取了HTML::TagParser中需要的标记,但现在唯一的选项是:

$value->innerText();
它只给我没有HTML标记的文本


或者我可以用某种方式将HTML::TagParser的结果与HTML::TreeBuilder连接起来,然后像这样使用HTML标记?

HTML::TagParser不仅读取元素内容。它还保留每个选定元素的元素名称和属性键/值对。因此,您可以轻松地复制元素的完整HTML代码

实际上,
HTML::TagParser
包含一个这样的示例:下面的代码从网页中提取所有
nchor标记,并将它们复制成一个HTML片段,精确列出这些标记

my $url  = 'http://www.kawa.net/xp/index-e.html';
my $html = HTML::TagParser->new( $url );
my @list = $html->getElementsByTagName( "a" );
foreach my $elem ( @list ) {
    my $tagname = $elem->tagName;
    my $attr = $elem->attributes;
    my $text = $elem->innerText;
    print "<$tagname";
    foreach my $key ( sort keys %$attr ) {
        print " $key=\"$attr->{$key}\"";
    }
    if ( $text eq "" ) {
        print " />\n";
    } else {
        print ">$text</$tagname>\n";
    }
}
my$url='1!'http://www.kawa.net/xp/index-e.html';
my$html=html::TagParser->new($url);
my@list=$html->getElementsByTagName(“a”);
foreach my$elem(@list){
我的$tagname=$elem->tagname;
我的$attr=$elem->attributes;
my$text=$elem->innerText;
打印“\n”;
}否则{
打印“>$text\n”;
}
}

这对于简单的元素扫描非常有效。对于更复杂的任务(例如混合的内部HTML内容),我更喜欢使用
HTML::Parser

多谢各位。我试试这个。当我的代码几乎完成时,我不想更改。我对这件事只有一个问题,但这不是这段代码中最重要的事情。我有个问题。由于HTML::TagParser具有类似于$something=$value->$subTree的内容,“此方法返回一个类为HTML::Parser的新对象,其中DOM层次结构中的所有元素都位于$elem之下。”那么我不能像使用HTML::Parser对象一样使用“$something”吗?如果是,在我的示例中,HTML::parser打印HTML是否有效?