解析 HTML 片段,将一些自定义标签列入白名单
Parse an HTML fragment whitelisting some custom tags
我正在尝试使用 Nokogiri 解析包含自定义 HTML 标签的 HTML 片段。
示例:
string = "<div>hello</div>\n<custom-tag></custom-tag>"
我尝试了多种加载方式,但 none 是最优的。
如果我使用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
。
如何让 Nokogiri 正确解析这个 HTML 片段?
doc = Nokogiri::HTML.fragment(string)
是要走的路,你可以忽略 doc.errors
抱怨标签无效。
你 给它无效 HTML,所以你不能指望它不报告错误,但 HTML 解析器往往是宽容的。
如果您确定其余部分格式正确,也可以使用 Nokogiri::XML.fragment
。这不会给你关于未定义标签的错误。
我正在尝试使用 Nokogiri 解析包含自定义 HTML 标签的 HTML 片段。
示例:
string = "<div>hello</div>\n<custom-tag></custom-tag>"
我尝试了多种加载方式,但 none 是最优的。
如果我使用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
。
如何让 Nokogiri 正确解析这个 HTML 片段?
doc = Nokogiri::HTML.fragment(string)
是要走的路,你可以忽略 doc.errors
抱怨标签无效。
你 给它无效 HTML,所以你不能指望它不报告错误,但 HTML 解析器往往是宽容的。
如果您确定其余部分格式正确,也可以使用 Nokogiri::XML.fragment
。这不会给你关于未定义标签的错误。