我要做的是将包含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,并且似乎忽略了块变量。
有什么好主意吗?关于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>
当你说//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>
元素做任何操作