HTMLドキュメントをカスタムタグ(Perlインタープレーター)で解析する簡単なPerlスクリプトは何ですか?
-
10-10-2019 - |
質問
わかりました、これは私がしていることです。カスタム拡張機能(.cpm)で終了するドキュメント用のPerlインタープリターを作成しています。私は周りを見回して見つけました
- http://perlmeme.org/tutorials/html_parser.html
- https://metacpan.org/pod/html::tokeparser:: simple
- http://www.justskins.com/forums/html-parser-8489.html
のようだ HTML ::パーサー 行く方法です。私が求めているのは、ドキュメントを特別なタグで解析する簡単なチュートリアルです。たとえば、HTMLドキュメントを解析する方法を示しているものが欲しいが、いつでも <putinbold>
それがそれを置き換えることが重要です <b>
.
私が欲しいものの例 -
<html>
This is HTML talking
<liamslanguage>say "This is Liams language speaking"</liamslanguage>
</html>
解決
で解析の重要な部分 HTML::Parser
権利を割り当てることです handlers
右に argspec
. 。サンプルプログラム:
#!/usr/bin/env perl
use strict;
use warnings;
use HTML::Parser;
my $html;
sub replace_tagname {
my ( $tagname, $event ) = @_;
if ( $tagname eq 'liamslanguage' ) {
$tagname = 'b';
}
if ( $event eq 'start' ) {
$html .= "<$tagname>";
}
elsif ( $event eq 'end' ) {
$html .= "</$tagname>";
}
}
my $p = HTML::Parser->new(
'api_version' => 3,
'start_h' => [ \&replace_tagname, 'tagname, event' ],
'default_h' => [ sub { $html .= shift }, 'text' ],
'end_h' => [ \&replace_tagname, 'tagname, event' ],
);
$p->parse( do { local $/; <DATA> } );
$p->eof();
print $html;
__DATA__
<html>
This is HTML talking
<liamslanguage>say "This is Liams language speaking"</liamslanguage>
</html>
所属していません StackOverflow