0

HTML::TreeBuilder::XPath用来解析复杂的 HTML 文档,然后对其进行编辑,然后再将其写回磁盘。我遇到的问题是,当我尝试解析 HTML 内容( )时,它拒绝<link...>了块内的标签:<body>$tree->parse_content($page);

HTML::Parse:<link>正文中的标题元素

我知道这些在 HTML5 之前是非法的,现在看来它们是合法的。有没有人知道一种方法来告诉树生成器这是合法的,或者只是让它接受它,即使它会发出警告。这些没有进入输出阶段,并且弄乱了布局。

4

1 回答 1

2

该元素在HTML 4 及其 XHTML 1 变体<link>中无效。如果 HTML 5 草案具有属性,则<body>它是允许的,但 HTML 5 尚未被批准为标准。bodyitemprop

首先,您应该确保您拥有最新版本的HTML::Parser,它HTML::TreeBuilder用于解析 HTML,并且可能是引发错误的原因。

然后,您可以尝试让它忽略<link>元素,就像这样

my $tree = HTML::TreeBuilder::XPath->new;
$tree->ignore_elements('link');
$tree->parse('myfile.html');
于 2013-05-23T21:44:05.087 回答