我尝试使用Nokogiri解析包含自定义HTML标记的HTML片段。
示例:
string = "<div>hello</div>\n<custom-tag></custom-tag>"
我试图以多种方式加载它,但没有一种是最佳的。
如果我使用Nokogiri :: HTML:
doc = Nokogiri::HTML(string)
当我使用to_html
时,会添加包含内容的doctype
和html
标记。这是不受欢迎的。
如果我使用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?
答案 0 :(得分:4)
doc = Nokogiri::HTML.fragment(string)
是可行的方法,您可以忽略doc.errors
抱怨无效标记。
你 给它无效的HTML,因此你不能指望它不报告错误,但HTML解析器往往是宽容的。
如果您确定其余部分格式正确,您也可以使用Nokogiri::XML.fragment
。这不会给你带来关于未定义标签的错误。