解析将某些自定义标记列入白名单的HTML片段

时间:2016-03-29 08:02:27

标签: html ruby nokogiri

我尝试使用Nokogiri解析包含自定义HTML标记的HTML片段。

示例:

string = "<div>hello</div>\n<custom-tag></custom-tag>"

我试图以多种方式加载它,但没有一种是最佳的。

如果我使用Nokogiri :: HTML:

doc = Nokogiri::HTML(string)

当我使用to_html时,会添加包含内容的doctypehtml标记。这是不受欢迎的。

如果我使用Nokogiri :: XML:

doc = Nokogiri::XML(string)

我得到了Error at line 2: Extra content at the end of the document,因为在XML中必须有一个包含所有文档内容的根标记。如果我再次尝试保存此内容,则输出为<div>hello</div>(删除第一个后的每个标记)

我也尝试了doc = Nokogiri::HTML.fragment

doc = Nokogiri::HTML.fragment(string)

但它抱怨custom-tag

如何使用此HTML片段正确解析Nokogiri?

1 个答案:

答案 0 :(得分:4)

doc = Nokogiri::HTML.fragment(string)是可行的方法,您可以忽略doc.errors抱怨无效标记。

给它无效的HTML,因此你不能指望它不报告错误,但HTML解析器往往是宽容的。

如果您确定其余部分格式正确,您也可以使用Nokogiri::XML.fragment。这不会给你带来关于未定义标签的错误。