【问题标题】:How to match the brother of a certain XML element in ruby?ruby 中如何匹配某个 XML 元素的兄弟?
【发布时间】:2011-04-20 04:16:45
【问题描述】:

我在 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?

【问题讨论】:

    标签: ruby xml html-parsing


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      猜你喜欢
      • 2020-09-27
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      相关资源
      最近更新 更多