Ruby on rails 如何在Nokogiri中找到空的结束标记?

Ruby on rails 如何在Nokogiri中找到空的结束标记?,ruby-on-rails,ruby,nokogiri,Ruby On Rails,Ruby,Nokogiri,我有一些关于Ruby中Nokogiri的问题 我有一个Nokogiri XML文档,其中包含一些空的结束标记。其中一些可以嵌套几层 比如, 名字 书 有人知道一种简单的方法来找到这些嵌套的空标记吗?或者任何人都可以用最简单的方法来导航文档以找到这些元素吗 另外,在标记的情况下,当我查找并删除时,是否有一种简单的方法来检查是否没有其他同级标记并删除父标记(现在不包含其他元素) 这是递归遍历的好地方。从文档根目录开始,您可以先遍历子目录,边走边清理。如果子级没有内容,请将其删除 def clea

我有一些关于Ruby中Nokogiri的问题

我有一个Nokogiri XML文档,其中包含一些空的结束标记。其中一些可以嵌套几层

比如,


名字
书
  • 有人知道一种简单的方法来找到这些嵌套的空标记吗?或者任何人都可以用最简单的方法来导航文档以找到这些元素吗

  • 另外,在
    标记的情况下,当我查找并删除
    时,是否有一种简单的方法来检查是否没有其他同级标记并删除父标记(现在不包含其他元素)


  • 这是递归遍历的好地方。从文档根目录开始,您可以先遍历子目录,边走边清理。如果子级没有内容,请将其删除

    def clean(node)
      node.children.each do |child|
        clean(child)
        child.remove if child.content.gsub(/\s+/, '').empty?
      end
    end
    
    您可以在移除孩子之前清洁孩子,从而实现您对第(2)部分的愿望-确保在考虑
    之前找到并移除
    。如果您不想删除现在为空的父项,您可以交换这些行

    由于文档的格式是供人阅读的,因此许多节点都包含带有空格的文本节点,因此
    gsub
    会在考虑空之前清除这些节点

    根据您的输入,这将导致:

    
    名字
    书
    
    您是否已尝试过该选项
    doc.css(':empty')
    应该可以工作。