我想使用Hpricot扫描所有元素的inner_text
,并知道当前正在扫描的元素。但是,我采取的每种方法都会导致递归。是否有内置函数与Hpricot(或Nokogiri)一起执行此操作?下面的代码只扫描一个级别:
@t = []
doc = Hpricot(open("some html doc"))
(doc/"html").each do |e|
e.children.each do |child|
if child.is_a?(Hpricot::Text)
@t << child.to_s.strip
end
end
end
答案 0 :(得分:1)
虽然我不确定为什么你想要收集所有文本节点(也许有一个更有效的解决方案),但这应该让你开始:
require 'nokogiri'
doc = Nokogiri::HTML(open('doc'))
doc.at_css("body").traverse do |node|
puts "***#{node.name}"
puts node.text
end
它使用Nokogiri的traverse
,它将访问起始节点下的所有节点。