【问题标题】:Why does this Nokogiri command strip out HTML tags?为什么这个 Nokogiri 命令会去除 HTML 标签?
【发布时间】:2010-07-09 00:15:49
【问题描述】:

这是previous question 的延续。我遇到了这个 Nokogiri sn-p 的问题:

>> require 'nokogiri'
>> html = 'bad<p>markup</p>with<img src="foo.jpg">'
>> Nokogiri::HTML(html).at_css('body').children.map {|x| '<p>' + x.text + '</p>'}.join('') 
=> "<p>bad</p><p>markup</p><p>with</p><p></p>"

我的图片标签怎么了?似乎 Nokogiri 可能正在剥离所有存在的 HTML 标签(包括我原来的 &lt;p&gt; 围绕“标记”这个词),并替换它们。我该如何防止这种情况发生?我要做的就是确保完全未标记的文本包含在 &lt;p&gt; 标记中...

【问题讨论】:

    标签: ruby nokogiri


    【解决方案1】:

    如果元素是文本节点,则仅将元素包装在 p 标签中,否则在其上调用 to_html

    require 'nokogiri'
    
    html = 'bad<p>markup</p>with<img src="foo.jpg">'
    
    Nokogiri::HTML(html).at_css('body').
    children.map do |x|
      if x.text?
        '<p>' + x.text + '</p>'
      else
        x.to_html
      end
    end.join('') 
    #=> "<p>bad</p>\n<p>markup</p><p>with</p><img src=\"foo.jpg\">"
    

    【讨论】:

    • 啊,好吧,这是有道理的。谢谢! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2018-02-13
    • 1970-01-01
    • 2021-09-06
    • 2015-09-13
    • 1970-01-01
    相关资源
    最近更新 更多