gpt4 book ai didi

javascript - 格式良好的 <script>Javascript</script> 标签在 STRICT 模式下混淆了 Nokogiri::HTML

转载 作者:数据小太阳 更新时间:2023-10-29 08:11:03 24 4
gpt4 key购买 nike

这是说明问题的测试用例:

def test_strict_Nokogiri
html = "<script> $('<a></a>') </script>"
doc = Nokogiri::HTML(html, nil, nil, Nokogiri::XML::ParseOptions::STRICT)
assert_empty doc.errors
end

该断言失败,因为有 errors : #<Nokogiri::XML::SyntaxError: Unexpected end tag : a> .

即使 Nokogiri 一直在 <script> 中寻找 HTML 标签标签,它应该看到 <a ...></a>标签是平衡的,对吧?

我如何让 Nokogiri 识别有效的 HTML,绕过嵌入式 Javascript,并且只在它真的坏了时才提示?

编辑:我已将错误传递给 libxml2 维护者:https://bugzilla.gnome.org/show_bug.cgi?id=795390

最佳答案

如果你想从 Nokogiri 元素中删除脚本标签,你可以这样做,

html = '<div> Hello </div> <script> $("<div></div>") </script>'
doc = Nokogiri::HTML(html, nil, nil, Nokogiri::XML::ParseOptions::STRICT)
doc.text # " Hello $(\"<div>\") "
doc.xpath('//script').remove
doc.text # " Hello "

doc.to_html 会返回这个

"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html><body>\n<div> Hello </div> </body></html>\n"

关于javascript - 格式良好的 &lt;script&gt;Javascript&lt;/script&gt; 标签在 STRICT 模式下混淆了 Nokogiri::HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49683104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com