我可以使用Mojo::DOM及其 CSS3 选择器来找出 HTML 文档的 DOCTYPE 吗?与我的另一个问题相关,我应该如何使用 Mojo::UserAgent 处理 HTML META 标签?在我想设置文档的字符集的地方,我需要知道要查看的内容,而doctype 嗅探似乎是一种方法。当文档设置覆盖服务器设置(或非设置)时,HTML 和 HTML 5 对 HTML 中的字符集具有不同的元标记。
我完成任务没有问题,因为我可以获取原始响应并使用正则表达式来查看 DOCTYPE。由于浏览器 DOM 似乎能够获取 DOCTYPE,因此我被认为应该能够获取它的想法所感染。然而,缺乏例子让我认为没有人按照我认为我应该做的方式去做。
我尝试了很多愚蠢的方法,但我的 CSS 功夫很弱:
use v5.20;
use feature qw(signatures);
no warnings qw(experimental::signatures);
use Mojo::DOM;
my $html = do { local $/; <DATA> };
my $dom = Mojo::DOM->new( $html );
say "<title> is => ", $dom->find( 'head title' )->map( 'text' )->each;
say "Doctype with find is => ", $dom->find( '!doctype' )->map( 'text' )->each;
say "Doctype with nodes is => ", $dom->[0];
__DATA__
<!DOCTYPE html>
<head>
<title>This is a title</title>
</head>
<body>
<h1>Level 1</h1>
</body>
</html>
当我转储$dom
对象时,我在树中看到 DOCTYPE:
$VAR1 = bless( do{\(my $o = bless( {
'tree' => [
'root',
[
'text',
'',
${$VAR1}->{'tree'}
],
[
'doctype',
' html',
${$VAR1}->{'tree'}
],
现在我该怎么做?