1

我想要做的是 pul 包含 td 和类默认值的代码块。这工作得很好。但是接下来我需要整理出代码块的不同部分。当我尝试使用第二个 xpath 调用执行此操作时,它所做的是每次打印每个块中的所有 comhead

   def HeaderProcessor(doc)         
        doc.xpath("//td[@class='default']").each do |block|             
            puts block.xpath("//span[@class='comhead']").text
        end
    end

当我只打印块时,每个块都会打印一次并包含注释标题和注释。当我尝试运行 xpath 时,它会打印出在 doc 中找到的每个 comhead,并且似乎忽略了 block 变量。

关于如何完成这项工作的任何想法?我对 xpath 有什么误解?

更新:

<td class="default">
<div style="margin-top:2px; margin-bottom:-10px; ">
<span class="comhead">
#some data        
</span></div>
<br><span class="comment"><font color="#000000">#some more data</span>
</td>
4

1 回答 1

2

当你说//span[@class='comhead'],你只是想告诉 Nokogiri 从根开始搜索*/span[@class='comhead']

doc.xpath("//td[@class='default']").each do |block|
    block.xpath("*/span[@class='comhead']").each do |span|
        puts span.text
    end
end

甚至只是这个:

doc.xpath('//td[@class="default"]/*/span[@class="comhead"]').each do |span|
    puts span.text
end

如果你不需要对<td>元素做任何事情。

于 2011-09-21T18:50:40.680 回答