我正在尝试做的是使用类默认值来包含td的代码块。这完全没问题。但后来我需要理清代码块的不同部分。当我尝试使用第二个xpath调用时,它每次打印每个块中的所有结构时都会执行此操作
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>
答案 0 :(得分: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>
元素执行任何操作。