如何匹配ruby中某个XML元素的兄弟?

时间:2010-10-02 07:41:17

标签: ruby xml html-parsing

我在ruby中使用了nokogiri和XML搜索功能,例如:

a = Nokogiri.XML(open 'a.xml')
x = a.search('//div[@class="foo"]').text

效果很好。

但是如何指定匹配同一级别(下一个)的下一个(兄弟)元素?

例如,对于此输入:

<div>
  <div>...</div>
  <div>...</div>
  <div class="foo"></div>
  <div>EXTRACT ME</dev>
  ...
</div>

实际输入是一些非XHTML html,但到目前为止Nokogiri.XML并没有抱怨。

顺便问一下,f.search真正期望的过滤器语法是什么?的xpath?

2 个答案:

答案 0 :(得分:3)

从Brian Agnew和DevNull那里得到提示我猜f.search实际上需要xpath语法并使用以下兄弟谓词,以下表达式与所要求的匹配:

a = x.search('//div[@class="foo"]/following-sibling::div[1]')

答案 1 :(得分:2)

我认为您需要XPath的following-sibling谓词。