【问题标题】:XPath predicate combinations for multiple elements多个元素的 XPath 谓词组合
【发布时间】:2012-04-25 09:46:12
【问题描述】:

使用 ruby​​ 1.9.3 和 Nokogiri(最新):

鉴于(不,我没有想到这个):

<root>
<subelement>
    <key>
          <var name="id">50</var>
          <var name="secondaryid">0</var>
     </key>
</subelement>
<subelement>
   <key>
          <var name="id">50</var>
          <var name="secondaryid">1</var>
   </key>
</subelement>
</root>

返回父元素 (),它有一个 var 元素,其 name 属性等于“id”,值等于 50,还有一个 var 元素,其 name 属性等于“secondaryid”,值等于 0。不要返回 id=50 和 secondaryid=1 的节点。

显然,它将建立在以下方面:

@doc.xpath("//var[@name='id' and text()=50]")

但我不知道如何添加另一个与 name = "secondaryid" 元素匹配的谓词。

【问题讨论】:

    标签: xpath nokogiri predicate


    【解决方案1】:

    未使用 Ruby 进行测试,但这应该可以解决问题。

    //key[var[@name='id'] = '50'][var[@name='secondaryid'] = '0']
    

    【讨论】:

    • 我在寻找secondaryid = 0,但除了那个小错字,完美。在此期间,我想出了另一个可行的解决方案,但更不优雅,并且可能有陷阱//var[@name='id' and text()=50]/../var[@name='secondaryid' and text()=0]/..
    【解决方案2】:

    另一种方法:

    subelement/key
      [var[@name="id" and . = "50"]]
      [var[@name="secondaryid" and . = "0"]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      相关资源
      最近更新 更多