У меня есть HTML как это:Как соответствовать ближайшему тегу назад с XPath
html =<<EOS
<table><!-- outer table -->
<tr><td>
<table><!-- inner table 1 -->
<tr><td>Foo</td></tr>
</table>
<table><!-- inner table 2 -->
<tr><td>Bar</td></tr>
</table>
</td></tr>
</table>
EOS
Я хочу, чтобы получить изменяющееся значение Bar
от статического значения Foo
.
С помощью этого кода я могу получить значение.
Nokogiri::HTML(html)
doc.xpath("//table[tr/td[text()='Foo']]/following-sibling::table//td").text
И я хотел бы переписать так:
doc.xpath("//table[//td[text()='Foo']]/following-sibling::table//td").text
Но этот код не работает, потому что //table[//td[text()='Foo']]
матчей внешней таблицы не внутренняя таблицы.
Есть ли выражение для nearest backward match
в XPath вот так?
//table[(nearest match expression)td[text()='Foo']]
Используя 'my_doc.at' или' my_doc.at_xpath', вы можете удалить '[1]' из XPath, правильно? – Phrogz
@Phrogz Возможно, это синтаксис Ruby? Что это значит? –
Используя Nokogiri, методы 'at' и' at_xpath' возвращают только первый элемент соответствия вместо набора узлов. – Phrogz