gpt4 book ai didi

ruby - 如何使用 Nokogiri 从 HTML 中删除不需要的标签?

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

我需要从文档中删除所有字体标签。当尝试使用以下 Ruby 代码执行此操作时,字体标签中的其他元素和文本将丢失。在取消链接字体标签之前,我还尝试遍历所有子元素并使它们成为字体标签的 sibling ——这也会导致 HTML 丢失。删除可能包含其他元素和/或文本的标签的好方法是什么?

  doc.css('font').each do |element|
element.unlink
end

更新(响应第一个解决方案):

使用 node.children 获取子节点然后将子节点移动到字体节点的父节点的问题是没有一个子节点包含在字体节点中找到的文本。删除字体标签(取消链接)后,字体标签内的所有文本也会从文档中消失。

因此,我修改后的问题是:如何使用 Nokogiri 获取字体节点的文本,以及如何移动该文本以替换字体节点位置的字体标签。

最佳答案

我根据您评论中的代码创建了一个更通用的解决方案:

module Filter
def remove_tags_preserve_content!(*list)
xpath('.//*').each do |element|
if list.include?(element.name)
element.children.reverse.each do |child|
child_clone = child.clone
element.add_next_sibling child_clone
child.unlink
end
element.unlink
end
end
end
end

class Nokogiri::XML::Element
include Filter
end

class Nokogiri::XML::NodeSet
include Filter
end

# === Example ===

doc.remove_tags_preserve_content!('font')

关于ruby - 如何使用 Nokogiri 从 HTML 中删除不需要的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2465032/

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