代码之家  ›  专栏  ›  技术社区  ›  maxschlepzig

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

  •  0
  • maxschlepzig  · 技术社区  · 14 年前

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

    效果不错。

    但是如何指定匹配同一级别上的下一个(brother)元素(并且只匹配下一个元素)?

    例如,对于此输入:

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

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

    2 回复  |  直到 14 年前
        1
  •  3
  •   maxschlepzig    14 年前

    根据Brian Agnew和DevNull的提示,我猜f.search实际上需要xpath语法,并且使用以下同级谓词,以下表达式与所询问的内容相匹配:

    a = x.search('//div[@class="foo"]/following-sibling::div[1]')
    
        2
  •  2
  •   Brian Agnew    14 年前

    我想你想要XPath的 following-sibling