我有一个这样的文件:
<DL><a lot of tags>...<H3>Entry 1</H3><a lot of tags>...</DL>
<DL><a lot of tags>...<H3>Entry 2</H3><a lot of tags>...
<DL><a lot of tags>...<H3>Entry 21</H3><a lot of tags>...
<DL><a lot of tags>...<H3>Entry 211</H3><a lot of tags>...</DL>
</DL>
</DL>
<DL><a lot of tags>...><H3>Entry 3</H3><a lot of tags>...</DL>
我想找到所有''条目,并且使用以下代码很容易:
@doc=Nokogiri::HTML(@file)
@doc.css('DL>h3').each do |node| puts node.text end
如何为任何条目提取H3父母列表? 我希望有一个方法作为“父”返回关系,即: entry211.parent ==&gt; /条目2 /条目21 /
答案 0 :(得分:1)
如果您只想要每个h3
元素的父元素
@doc.css('DL>h3').collect(&:parent)
应该这样做。
但是,您可能希望所有h3
元素都是dl
元素的子元素,这些元素是h3
元素的祖先。如果我已经正确地理解了你的结构,你应该能够做到
@doc.css('dl>h3').collect { |h3| h3.ancestors('dl').css('h3') }
这会为您提供一个Array
,其中包含Array
个h3
个元素,这些元素是每个dl
元素祖先中h3
个元素的后代。困惑?我肯定是:)。
例如,使用示例HTML,条目211 h3
的结果为
@doc.css('dl>h3').collect { |h3| h3.ancestors('dl').css('h3') }[3].collect(&:text)
#=> ["Entry 211", "Entry 21", "Entry 2"]
这足够接近你想要的吗?