【发布时间】:2016-07-16 16:13:24
【问题描述】:
我正在尝试使用 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?
【问题讨论】:
-
您的预期结果是什么?
-
@AmitSharma 我希望在 HTML 中解析没有错误的字符串,即使它包含
custom-tag。我需要进行一些 xpath 查询,编辑内容,并无错误地序列化回 html。 -
你试过这个
doc = Nokogiri::HTML(string).inner_html吗? -
@RORDeveloper 尝试检查
doc.errors。我应该忽略它们吗?如何确保内容完好无损? @AmitSharmainner_html似乎和to_html一样工作... -
@ProGM
inner_html不会添加doctype,但会使用html包装内容