Nokogiri 在用 <meta charset='UTF-8> 解析 html 时引发错误
Nokogiri raises error when parsing html with <meta charset='UTF-8>
Nokogiri::HTML 将 <meta charset='UTF-8>
添加到 .html 文件时出现错误。
文件如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>My super content</title>
<link rel="stylesheet" type="text/css" href="./static.css">
</head>
<body>
<footer>
<p></p>
</footer>
<script type="text/javascript" src="./static.js"></script>
</body>
</html>
当我解析它时,我得到:
$ doc = Nokogiri::HTML(open('myfile.html'))
$ doc.errors
> [#<Nokogiri::XML::SyntaxError: 10:12: ERROR: Tag footer invalid>]
删除 <meta charset="UTF-8">
解决问题。
为什么?我怎样才能让它与它一起工作?
Nokogiri 主要是一个 XML 解析器,因此预计大部分有效 XML。虽然 HTML 看起来很像 XML,尤其是 HTML 5,但是关于例如关闭标签和算法来检测诸如编码之类的事情,这使得 HTML 5 与 XML 和 XML 解析器不兼容。
在 an issue 中,与您的问题相关,Mike Dalessio(nokogiri 维护者之一)的回应是:
Nokogiri does not support HTML5. You may want to check out the Nokogumbo project, which aims for HTML5 compatibility with the Gumbo parser.
Nokogiri::HTML 将 <meta charset='UTF-8>
添加到 .html 文件时出现错误。
文件如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>My super content</title>
<link rel="stylesheet" type="text/css" href="./static.css">
</head>
<body>
<footer>
<p></p>
</footer>
<script type="text/javascript" src="./static.js"></script>
</body>
</html>
当我解析它时,我得到:
$ doc = Nokogiri::HTML(open('myfile.html'))
$ doc.errors
> [#<Nokogiri::XML::SyntaxError: 10:12: ERROR: Tag footer invalid>]
删除 <meta charset="UTF-8">
解决问题。
为什么?我怎样才能让它与它一起工作?
Nokogiri 主要是一个 XML 解析器,因此预计大部分有效 XML。虽然 HTML 看起来很像 XML,尤其是 HTML 5,但是关于例如关闭标签和算法来检测诸如编码之类的事情,这使得 HTML 5 与 XML 和 XML 解析器不兼容。
在 an issue 中,与您的问题相关,Mike Dalessio(nokogiri 维护者之一)的回应是:
Nokogiri does not support HTML5. You may want to check out the Nokogumbo project, which aims for HTML5 compatibility with the Gumbo parser.