Nokogiri e Xpath: encontre todo o texto entre duas tags

Não tenho certeza se é uma questão de sintaxe ou diferenças nas versões, mas não consigo entender isso. Quero levar os dados que estão dentro de um (sem fechamento)td deh2 tag para oh3 etiqueta, rótulo, palavra-chave. Aqui está a aparência do HTML.

<td valign="top" width="350">
    <br><h2>NameIWant</h2><br>
    <br>Town<br>

    PhoneNumber<br>
    <a href="mailto:[email protected]" class="links">[email protected]</a>
    <br>
    <a href="http://websiteIwant.com" class="links">websiteIwant.com</a>
    <br><br>    
    <br><img src="images/spacer.gif"/><br>

    <h3><b>I want to stop before this!</b></h3>
    Lorem Ipsum Yadda Yadda<br>
    <img src="images/spacer.gif" border="0" width="20" height="11" alt=""/><br>
    <td width="25">
        <img src="images/spacer.gif" border="0" width="20" height="8" alt=""/>
        <td valign="top" width="200"><img src="images/spacer.gif"/>
            <br>
            <br>

            <table cellspacing="0" cellpadding="0" border="0"/>205"&gt;<tr><td>
                <a href="http://dontneedthis.com">
                </a></td></tr><br>
            <table border="0" cellpadding="3" cellspacing="0" width="200">
            ...

o<td valign> não fecha até a parte inferior da página, que eu acho que pode ser o motivo pelo qual estou tendo problemas.

Meu código Ruby se parece com:

require 'open-uri'
require 'nokogiri'

@doc = Nokogiri::XML(open("http://www.url.com"))

content = @doc.css('//td[valign="top"] [width="350"]')

name = content.xpath('//h2').text
puts name // Returns NameIwant

townNumberLinks = content.search('//following::h2')
puts content // Returns <h2> NameIWant </h2>

Pelo que entendi, a sintaxe a seguir deve "Seleciona tudo no documento após a tag de fechamento do nó atual". Se eu tentar usarpreceding gostar:

townNumberLinks = content.search('//preceding::h3')
// I get: <h3><b>I want to stop before this!</b></h3>

Espero ter deixado claro o que estou tentando fazer. Obrigado!

questionAnswers(2)

yourAnswerToTheQuestion