1

私がやろうとしているのは、クラスのデフォルトでtdを含むコードブロックをプルすることです。これは完全に正常に機能します。しかし、次に、コードブロックのさまざまな部分を整理する必要があります。2番目のxpath呼び出しでこれを実行しようとすると、各ブロックのすべてのcomheadが出力されるたびに実行されます。

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

ブロックを印刷するだけの場合、各ブロックは1回印刷され、コメントヘッダーとコメントが含まれます。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>
4

1 に答える 1

2

あなたが言うとき、あなたはノコギリにルートから検索するように言っています//span[@class='comhead']、あなたはただ欲しいです*/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 に答える