我正在使用HTML::TreeBuilder::XPath
来解析复杂的HTML文档,然后在将其写回磁盘之前对其进行编辑。我遇到的问题是,当我尝试解析HTML内容(<link...>
)时,它会拒绝<body>
块中的$tree->parse_content($page);
个标记:
HTML :: Parse:正文中的标题元素
<link>
我知道这些在HTML5之前是非法的,现在看来它们是合法的。有没有人知道如何让tell treebuilder这是合法的,或者让它接受它,即使它会发出警告。这些都没有进入输出阶段,搞乱了布局。
答案 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');