2012-04-25 172 views
0

使用Ruby 1.9.3和引入nokogiri(最新):的XPath謂詞組合多個元素

考慮(不,我沒有想出這個):

<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> 

返回父元素(<鍵>),它具有名稱屬性等於「id」且值等於50的var元素AND具有名稱屬性等於「secondaryid」且值等於0的var元素。不返回id = 50的節點和secondaryid = 1。

顯然,這將是建關沿着線的東西:

@ doc.xpath( 「// VAR [@名稱= 'ID' 和文字()= 50]」)

但我無法弄清楚如何添加另一個匹配name =「secondaryid」元素的謂詞。

回答

0

沒有用Ruby測試過,但是這應該可以做到。

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

我一直在尋找secondaryid = 0,但除此之外的小錯字,完美。在此期間,我想出了另一種可行的解決方案,但更加不雅觀,並且可能存在一些問題'/ var [@ name ='id'and text()= 50] /../ var [@ name =' secondaryid'和text()= 0]/..' – wadesworld 2012-04-25 10:05:56

+0

啊是的,編輯搜索0而不是1。 – kmkaplan 2012-04-25 11:42:45

0

另一種方法:

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