HTML :: TreeBuilder :: XPath拒绝body标签内的<link />

时间:2013-05-23 20:50:09

标签: html perl xpath

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

  

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

我知道这些在HTML5之前是非法的,现在看来它们是合法的。有没有人知道如何让tell tr​​eebuilder这是合法的,或者让它接受它,即使它会发出警告。这些都没有进入输出阶段,搞乱了布局。

1 个答案:

答案 0 :(得分:2)

{4}及其XHTML 1版本的<link>内的<body>元素无效。如果HTML 5草案具有body属性,则允许在itemprop范围内,但HTML 5尚未作为标准批准。

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

然后,您可以尝试将其忽略<link>元素,例如

my $tree = HTML::TreeBuilder::XPath->new;
$tree->ignore_elements('link');
$tree->parse('myfile.html');