从Nokogiri的文档中提取所有父母



我有这样的文档:

<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 父项列表?我想有一个作为"父"的方法返回关系,即:条目211.父级 ==>/条目 2/条目 21/

如果您只需要每个h3元素的父元素

@doc.css('DL>h3').collect(&:parent)

应该做这个伎俩。

但是,看起来您可能希望所有元素都是dl元素的子元素h3该元素是h3元素的祖先。如果我理解了这一点并且您的结构正确,您应该能够做到

@doc.css('dl>h3').collect { |h3| h3.ancestors('dl').css('h3') }

这为您提供了一个包含Array Array,其中包含h3元素,这些元素是每个h3元素祖先中dl元素的后代。困惑?我肯定是:)

例如,使用示例 HTML,条目 211 h3的结果为

@doc.css('dl>h3').collect { |h3| h3.ancestors('dl').css('h3') }[3].collect(&:text)
#=> ["Entry 211", "Entry 21", "Entry 2"]

这是否足够接近您想要的?

相关内容

  • 没有找到相关文章

最新更新