使用Nokogiri根据子属性的值提取父属性的值

达克斯

我有一些需要从中提取值的xml。非常简化的版本如下:

...
<event id="380783">
  ...
  <competitor id="1929" name="x">
    <homeaway>home</homeaway>
  </competitor>
  ...
</event>
...

有很多事件,每个事件都有一个“主场”团队和“离场”团队-我需要获得主场和替身的竞争对手ID,但我需要知道哪个是哪个。

就我自己而言,我可以这样获得ID:

doc.xpath("//event[@id=#{uid}]//competitor").attr('id').value

我还可以找出给定的节点是“家”还是“家”

2.1.1 :107 > first_match.xpath('//event[@id=#{uid}]//competitor//homeaway').children[0].text
 => "home" 
2.1.1 :108 > first_match.xpath('//event[@id=#{uid}]//competitor//homeaway').children[1].text
 => "away" 

但我想找到按居家还是外出来确定ID的范围。就像是:

away = xpath('//event[@id=#{uid}]//competitor//homeaway).children.text == away
away.parent.attr('id')

我该怎么办?

虚假的

这个怎么样(使用ancestor轴得到idcompetitor):

home_id = doc.at_xpath(
  "//event[@id=#{uid}]//competitor//homeaway[text()='home']" +
  "/ancestor::competitor/@id").value

away_id = doc.at_xpath(
  "//event[@id=#{uid}]//competitor//homeaway[text()='away']" +
  "/ancestor::competitor/@id").value

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章