我试图使用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解析正确?
发布于 2016-03-29 10:27:47
doc = Nokogiri::HTML.fragment(string)是方法之一,您可以忽略doc.errors抱怨无效标签。
您给它的HTML无效,所以您不能期望它不报告错误,但HTML解析器往往是宽容的。
您也可以使用Nokogiri::XML.fragment,如果您确信它的其余部分是格式良好的话。这不会给您带来关于未定义标记的错误。
https://stackoverflow.com/questions/36278666
复制相似问题