Ruby on rails 如何使用Hpricot解析嵌套的ul/li标记

Ruby on rails 如何使用Hpricot解析嵌套的ul/li标记,ruby-on-rails,hpricot,Ruby On Rails,Hpricot,我有以下HTML结构 <div id='my_categories'> <ul> <li><a href="1">Animals, Birds, & Pets</a></li> <li><a href="2">Ask the Expert</a> <ul> <li><a href='21'&g

我有以下HTML结构

 <div id='my_categories'>
   <ul>
     <li><a href="1">Animals, Birds, & Pets</a></li>
     <li><a href="2">Ask the Expert</a>
       <ul>
         <li><a href='21'>Health Care Providers</a></li>
         <li><a href='22'>Influnza</a>
           <ul>
             <li><a href='221'>Flu Viruses (2)</a></li>
            <li><a href='222'>Test</a></li>
           </ul>
         </li>
       </ul>
     </li>
    </ul>
  </div>

提前感谢

下面是为我工作的代码

   doc = Hpricot(open(categories_page).read)
   doc.search("ul/li").each do |li| 
     category = li.search('a[@href]').first.inner_text.gsub(/ *\(.*?\)/, '')
     category_url = li.search('a').first[:href]
     category = Category.find_or_create_by_name(category, :url => category_url)

     puts "---------- #{category.name} ------------"
     nodes = li.search("ul/li/a")
     unless nodes.empty?
       nodes.each do |node|
         node_name = node.inner_text.gsub(/ *\(.*?\)/, '')
         node_url = node.attributes['href']
         sub_category = Category.find_by_name(node_name)
         if sub_category.blank?
           sub_category = Category.create(:name => node_name, :url => node_url, :parent_category_id => category.id)
           puts " #{sub_category.name}"
         else
           sub_category.update_attribute('parent_category_id', category.id)
           puts "  #{category.name} --> #{sub_category.name}"
         end
       end
     end    
   end

下面是为我工作的代码

   doc = Hpricot(open(categories_page).read)
   doc.search("ul/li").each do |li| 
     category = li.search('a[@href]').first.inner_text.gsub(/ *\(.*?\)/, '')
     category_url = li.search('a').first[:href]
     category = Category.find_or_create_by_name(category, :url => category_url)

     puts "---------- #{category.name} ------------"
     nodes = li.search("ul/li/a")
     unless nodes.empty?
       nodes.each do |node|
         node_name = node.inner_text.gsub(/ *\(.*?\)/, '')
         node_url = node.attributes['href']
         sub_category = Category.find_by_name(node_name)
         if sub_category.blank?
           sub_category = Category.create(:name => node_name, :url => node_url, :parent_category_id => category.id)
           puts " #{sub_category.name}"
         else
           sub_category.update_attribute('parent_category_id', category.id)
           puts "  #{category.name} --> #{sub_category.name}"
         end
       end
     end    
   end

什么
家长id
?请给出一个想要输出的例子。Jonas我已经更新了我的问题,我的表值是什么样子的。希望这能消除您的疑虑。什么
家长id
?请给出一个想要输出的例子。Jonas我已经更新了我的问题,我的表值是什么样子的。希望这能消除你的疑虑。