加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 使用Nokogiri删除没有文本的元素

发布时间:2020-12-17 03:59:20 所属栏目:百科 来源:网络整理
导读:鉴于Nokogiri中的 HTML文档,我想删除所有 p没有实际文本的节点.这包括 p具有空格和/或 br /的元素标签.最优雅的方式是什么? 解决方法 我会从像这样的方法开始(如果你愿意,可以随意monkeypatch Nokogiri :: XML :: Node) def is_blank?(node) (node.text? no
鉴于Nokogiri中的 HTML文档,我想删除所有< p>没有实际文本的节点.这包括< p>具有空格和/或< br />的元素标签.最优雅的方式是什么?

解决方法

我会从像这样的方法开始(如果你愿意,可以随意monkeypatch Nokogiri :: XML :: Node)

def is_blank?(node)
  (node.text? && node.content.strip == '') || (node.element? && node.name == 'br')
end

然后继续使用另一种方法检查所有子项是否为空:

def all_children_are_blank?(node)
  node.children.all?{|child| is_blank?(child) } 
  # Here you see the convenience of monkeypatching... sometimes.
end

最后,获取文档和

document.css('p').find_all{|p| all_children_are_blank?(p) }.each do |p|
  p.remove
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读