Nokogiri recursively get all children

后端 未结 2 1426
花落未央
花落未央 2021-02-07 23:19

The Problem

I am running some statistics against various URLS. I want to find the top level element with the most concentrated number of children. The method that I wo

2条回答
  •  别那么骄傲
    2021-02-07 23:34

    # Non-recursive
    class Nokogiri::XML::Node
      def descendant_elements
        xpath('.//*')
      end
    end
    
    # Recursive 1
    class Nokogiri::XML::Node
      def descendant_elements
        element_children.map{ |kid|
          [kid, kid.descendant_elements]
        }.flatten
      end
    end
    
    # Recursive 2
    class Nokogiri::XML::Node
      def descendant_elements
        kids = element_children.to_a
        kids.concat(kids.map(&:descendant_elements)).flatten
      end
    end
    

提交回复
热议问题